如何解决C#-WPF DataGrid中的动态按钮-CellTemplateSelector
我有一个数据网格,我想在其中向每行添加一个按钮。根据条件,此按钮应具有其他功能。 数据网格由一些可以使用按钮安装或卸载的文件组成。因此,该按钮应称为“安装”或“卸载”。
我创建了以下xaml
...
<Grid.Resources>
<local:ButtonTemplateSelector x:Key="buttonTemplateSelector">
<local:ButtonTemplateSelector.InstallButtonTemplate>
<DataTemplate>
<Button x:Name="btn_installSnippet" Click="btn_installSnippet_Click">Install</Button>
</DataTemplate>
</local:ButtonTemplateSelector.InstallButtonTemplate>
<local:ButtonTemplateSelector.UninstallButtonTemplate>
<DataTemplate>
<Button x:Name="btn_uninstallSnippet" Click="btn_uninstallSnippet_Click">Uninstall</Button>
</DataTemplate>
</local:ButtonTemplateSelector.UninstallButtonTemplate>
</local:ButtonTemplateSelector>
</Grid.Resources>
...
<DataGrid x:Name="dataGrid_newViews" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="148" Margin="40,152,0" VerticalAlignment="Top" Width="685" AutoGenerateColumns="True" SelectedCellsChanged="Datagrid_SelectedCellsChanged" CanUserAddRows="false" Grid.ColumnSpan="2">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Button" CellTemplateSelector="{StaticResource buttonTemplateSelector}" />
</DataGrid.Columns>
</DataGrid>
public class ButtonTemplateSelector : DataTemplateSelector
{
public DataTemplate InstallButtonTemplate { get; set; }
public DataTemplate UninstallButtonTemplate { get; set; }
public override System.Windows.DataTemplate SelectTemplate(object item,System.Windows.DependencyObject container)
{
return InstallButtonTemplate;
}
}
如果要返回InstallButtonTemplate
或UninstallButtonTemplate
,在这里我完全迷住了如何从行中获取值(从datagrid绑定)来编写条件。
解决方法
您已经完成了所有工作,缺少的一部分是将object item
参数转换为要绑定到的集合中项目的数据类型,如下所示:
public class ButtonTemplateSelector : DataTemplateSelector
{
public DataTemplate InstallButtonTemplate { get; set; }
public DataTemplate UninstallButtonTemplate { get; set; }
public override System.Windows.DataTemplate SelectTemplate(object item,System.Windows.DependencyObject container)
{
var myItem = (YourType)item;
if (myItem.FilePresent == true){
return UninstallButtonTemplate ;
}
return InstallButtonTemplate;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。