我正在使用带有 DataTemplate 的 ListBox。
<ListBox Grid.Row="1" Grid.ColumnSpan="3" Grid.RowSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
ItemsSource="{Binding Order.OrderLines}" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0">Qty</TextBlock>
<TextBox Text="{Binding LineQty, Mode=TwoWay}" Grid.Column="1" />
<TextBlock Grid.Row="1" Grid.Column="0">Weight</TextBlock>
<TextBox Text="{Binding Path=LineWeight}" Grid.Row="1" Grid.Column="1" />
<TextBlock Grid.Column="0" Grid.Row="2">Pallet Weights</TextBlock>
<TextBox Text="{Binding PalletWeights}" Grid.Row="2" Grid.Column="1" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
TextBox 值绑定正确。问题是我的 ViewModel 上有一个名为“ViewMode”的属性,我将 TextBox 的 IsEnabled 属性绑定到 App.xaml 样式 DataTrigger:
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding ViewMode}" Value="Add">
<Setter Property="BorderBrush" Value="White"></Setter>
<Setter Property="BorderThickness" Value="2,2,0,0"></Setter>
<Setter Property="BorderBrush" Value="Black"></Setter>
<Setter Property="BorderThickness" Value="0,0,2,2"></Setter>
<Setter Property="Background" Value="LightBlue"></Setter>
<Setter Property="Foreground" Value="Black"></Setter>
<Setter Property="FontWeight" Value="Bold"></Setter>
<Setter Property="IsEnabled" Value="true"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ViewMode}" Value="Edit">
<Setter Property="BorderBrush" Value="White"></Setter>
<Setter Property="BorderThickness" Value="2,2,0,0"></Setter>
<Setter Property="BorderBrush" Value="Black"></Setter>
<Setter Property="BorderThickness" Value="0,0,2,2"></Setter>
<Setter Property="Background" Value="LightBlue"></Setter>
<Setter Property="Foreground" Value="Black"></Setter>
<Setter Property="FontWeight" Value="Bold"></Setter>
<Setter Property="IsEnabled" Value="true"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ViewMode}" Value="View">
<Setter Property="IsEnabled" Value="false"></Setter>
<Setter Property="Foreground" Value="Gray"></Setter>
</DataTrigger>
</Style.Triggers>
<Setter Property="Margin" Value="2" />
</Style>
这适用于我所有的其他文本框。如何让 IsEnabled 属性在 DataTemplate 中工作?ListBox 的 DataContext 引用了 ViewModel 属性“Order”,所以我认为它应该能够看到 ViewModel 属性“ViewMode”。
谢谢,-希德。