【发布时间】:2013-09-26 12:52:11
【问题描述】:
我目前正在开发一个 WPF 应用程序,该应用程序包含一个包含 3 列的数据网格,其中包含 ToggleButtons,其代码如下
<DataGridTemplateColumn Header="Closed" Width="60">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ToggleButton>
<ToggleButton.Content>
...
</ToggleButton.Content>
</ToggleButton>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Checked" Width="60">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ToggleButton Visibility="{Binding Path=IsClosedProperty, Converter={StaticResource toggleButtonVisibilityConverter}}">
<ToggleButton.Content>
...
</ToggleButton.Content>
</ToggleButton>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Active" Width="60">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ToggleButton Visibility="{Binding Path=IsCheckedProperty, Converter={StaticResource toggleButtonVisibilityConverter}}">
<ToggleButton.Content>
...
</ToggleButton.Content>
</ToggleButton>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
toggleButtonVisibilityConverter的代码如下
public class ToggleButtonVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value is bool && ((bool)value) ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
应用程序应该这样工作,当单击 Closed 列中的一行的 ToggleButton 时,该行的 Checked 列中的 ToggleButton 变得可见(即调用 toggleButtonVisibilityConverter)。此外,当单击Checked 列中某一行的ToggleButton 时,该行的Active 列中的ToggleButton 变为可见。当相应的 ToggleButtons 未被点击时,它们应该隐藏在相同的层次结构中。
IsClosedProperty 和 IsCheckedProperty 是 ViewModel 的布尔属性,分别在单击 Closed 和 Checked 切换按钮时设置为 true。
【问题讨论】:
-
我不知道如何在点击ToggleButton时调用转换器。
标签: wpf xaml datagrid converter