使用 在文本块中使用某些属性
本文关键字:文本 属性 Text Run Binding 使用 | 更新日期: 2023-09-27 17:49:21
我在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
上绑定)做同样的事情时,由于某种原因,它使应用程序崩溃。
如果我只是用相同的绑定表达式设置Text
属性在我的TextBlock
上,它工作得很好,但我不知道为什么它使应用程序在市场订单信息部分上使用<Run Text={Binding ...}/>
语法崩溃?
你没有显示你的视图模型或错误,所以我只能怀疑这是因为你的属性是只读的,默认情况下Run
绑定两种方式。将绑定更改为OneWay
<Run Text="{Binding VolumeRemaining, Mode=OneWay}"/>