是否可以為 WPF 資料網格中定義的列加載不同的資料模板?
我的 XAML 看起來像這樣:
<DataGridTemplateColumn Header="Select">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox
HorizontalContentAlignment="Center"
Visibility="{Binding IsStarted}"
VerticalAlignment="Center"
IsChecked="{Binding IsStarted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding DataContext.Checked,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
這里的目標是在系結IsStarted設定為 false時加載單獨的資料模板,換句話說,當可見性設定為 false 時。
此處的預期目的是當某個按鈕被觸發時,該按鈕會將布林值設定為“false”,另一個資料模板將在這個自己的列上而不是當前現有專案上可見。
例如,當執行按鈕后布林值設定為 false 時,應顯示以下 XAML,
<TextBlock Visibility="{Binding IsTrue}" Text="Hello" />
這可能嗎?
uj5u.com熱心網友回復:
你可以替換CheckBox在DataTemplate用ContentControl,并使用Style了DataTrigger以取代其ContentTemplate基礎上的價值IsStarted引數:
<DataGridTemplateColumn Header="Select">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox
HorizontalContentAlignment="Center"
Visibility="{Binding IsStarted}"
VerticalAlignment="Center"
IsChecked="{Binding IsStarted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding DataContext.Checked,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsStarted}" Value="False">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="Some other template" />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/369835.html
上一篇:如何系結到ListView中的模型而不是WinUI3中的屬性?
下一篇:Uno平臺:未找到匯入的專案
