我对WinUI很陌生,在我的WinUI3应用程序中使用CommunityToolkit.WinUI.UI.Controls。我用的是达塔格力。其中一个列生成如下所示:
<controls:DataGridTextColumn Binding="{Binding MessageId}" Header="Id" />我还为网格中的操作生成了Button列,如下所示:
<controls:DataGridTemplateColumn Header="Action">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="SendAsync" CommandParameter="{Binding Path=MessageId}">Send</Button>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
</controls:DataGrid.Columns>我的问题是,这个按钮只应该根据来自Source的列"Status“可见。在网上搜索后,我找不到任何解决办法。我曾经在WinForm应用程序上使用WinForm,在那里我们可以根据任何单元格值使用条件可见性。
请向我建议如何在WinUI3中克服这种条件可见性/类似于WinUI3的功能的问题。
发布于 2022-07-22 00:33:46
您可以创建一个转换器,并像这样控制Button的Visibility属性。
BoolToVisibilityConverter.cs
public class BoolToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return ((bool)value) is true
? Visibility.Visible
: Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language) => throw new NotImplementedException();
}您的DataGrid
<Page.Resources>
<helpers:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</Page.Resources><controls:DataGridTemplateColumn Header="Action">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
Click="SendAsync"
CommandParameter="{Binding Path=MessageId}"
Visibility="{Binding Status, Converter={StaticResource BoolToVisibilityConverter}}"/>>
Send
</Button>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>https://stackoverflow.com/questions/73066079
复制相似问题