在文本块中使用具有某些属性的 <Run Text={Binding ...}/> 时应用程序崩溃

Application crashing when using <Run Text={Binding ...}/> with certain properties in a textblock

我在 TextBlock 中使用 <Run Text={Binding ...}/> 来连接 2 个字符串(一个是硬编码的,另一个是 属性 上的绑定表达式)。这是在 DataTemplate :

中完成的
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <DataTemplate x:Key="MarketOrderDataTemplate">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="30*"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="70*"/>
            </Grid.ColumnDefinitions>

            <!-- Item icon TODO: Add Icon-->
            <Image Grid.Column="0" Margin="10,0,10,0"  Stretch="Fill" Source="../../Images/thumb_icon-mineral-protoss.png" />

            <Separator Grid.Column="1" Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />

            <!-- Item information -->
            <Grid Grid.Column="2" Margin="10,0,10,0" HorizontalAlignment="Center">
                <Grid.RowDefinitions>
                    <RowDefinition Height="33*"/>
                    <RowDefinition Height="33*"/>
                    <RowDefinition Height="33*"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Row="0">
                    <Run Text="Item Name : "/>
                    <Run Text="{Binding Item.ItemName}"/>
                </TextBlock>
                <TextBlock Grid.Row="1">
                    <Run Text="Item ID : "/>
                    <Run Text="{Binding Item.ItemID}"/>
                </TextBlock>
                <TextBlock Grid.Row="2">
                    <Run Text="Item Type : "/>
                    <Run Text="{Binding Item.ItemType}"/>
                </TextBlock>
            </Grid>

            <Separator Grid.Column="3" Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />

            <!-- Market order information -->
            <Grid Grid.Column="4" Margin="10,0,10,0" HorizontalAlignment="Center">
                <Grid.RowDefinitions>
                    <RowDefinition Height="33*"/>
                    <RowDefinition Height="33*"/>
                    <RowDefinition Height="33*"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Row="0">
                    <Run Text="Market Order ID : "/>
                    <Run Text="{Binding OrderID}"/>
                </TextBlock>
                <TextBlock Grid.Row="1">
                    <Run Text="Price : "/>
                    <Run Text="{Binding Price}"/>
                </TextBlock>
                <TextBlock Grid.Row="2">
                    <Run Text="Volume Remaining : "/>
                    <Run Text="{Binding VolumeRemaining}"/>
                </TextBlock>
            </Grid>
        </Grid>
    </DataTemplate>

</ResourceDictionary>

这适用于我的 DataTemplate 的项目信息部分(绑定 Item.ItemNameItem.ItemIDItem.ItemType)没有任何问题。但是,当我尝试对我的 DataTemplate 的市场订单信息部分执行相同操作时(在 OrderIDPriceVolumeRemaining 上进行绑定),它会使应用程序崩溃一些理由。

如果我用相同的绑定表达式在 TextBlock 上设置 Text属性 效果很好,但我不知道为什么它会导致应用程序崩溃 <Run Text={Binding ...}/> 市场订单信息部分的语法?

您没有显示您的视图模型或错误,所以我只能怀疑这是因为您的 属性 是只读的,而 Run 默认绑定两种方式。将绑定更改为 OneWay

<Run Text="{Binding VolumeRemaining, Mode=OneWay}"/>