在文本块中使用具有某些属性的 <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.ItemName
、Item.ItemID
、Item.ItemType
)没有任何问题。但是,当我尝试对我的 DataTemplate
的市场订单信息部分执行相同操作时(在 OrderID
、Price
、VolumeRemaining
上进行绑定),它会使应用程序崩溃一些理由。
如果我用相同的绑定表达式在 TextBlock
上设置 Text
属性 效果很好,但我不知道为什么它会导致应用程序崩溃 <Run Text={Binding ...}/>
市场订单信息部分的语法?
您没有显示您的视图模型或错误,所以我只能怀疑这是因为您的 属性 是只读的,而 Run
默认绑定两种方式。将绑定更改为 OneWay
<Run Text="{Binding VolumeRemaining, Mode=OneWay}"/>
我在 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.ItemName
、Item.ItemID
、Item.ItemType
)没有任何问题。但是,当我尝试对我的 DataTemplate
的市场订单信息部分执行相同操作时(在 OrderID
、Price
、VolumeRemaining
上进行绑定),它会使应用程序崩溃一些理由。
如果我用相同的绑定表达式在 TextBlock
上设置 Text
属性 效果很好,但我不知道为什么它会导致应用程序崩溃 <Run Text={Binding ...}/>
市场订单信息部分的语法?
您没有显示您的视图模型或错误,所以我只能怀疑这是因为您的 属性 是只读的,而 Run
默认绑定两种方式。将绑定更改为 OneWay
<Run Text="{Binding VolumeRemaining, Mode=OneWay}"/>