使用在文本块中使用某些属性

本文关键字:文本 属性 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 Text={Binding ..}/>在文本块中使用某些属性

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

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