我在WPF世界中相当新,现在不知道要寻找什么,或者如何提出这个问题所以它可能是重复的但是我找不到解决方案所以我只是要问一下反正。
我有一个包含带有CheckBoxColumn的DataGrid的自定义UserControl。
<UserControl x:Class="WSConnect.WPF.Controls.CheckDataGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="319.149" d:DesignWidth="530.699" Name="_checkDataGrid">
<Grid>
<DataGrid Name="DataGrid1">
<DataGrid.Columns>
<DataGridTemplateColumn Width="30">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="False"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" Margin="1 0 0 0" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
现在我想从另一个UserControl / Window访问DataGrid并添加Columns / Rows,也可能更改DataGrid中的其他一些内容。
<UserControl x:Class="WSConnect.WPF.Controls.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WSConnect.WPF.Controls"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="500">
<Grid>
<local:CheckDataGrid>
<!--This does not work-->
<local:CheckDataGrid.DataGrid1>
<!--Change stuff here-->
</local:CheckDataGrid.DataGrid1>
</local:CheckDataGrid>
</Grid>
我该如何做这样的事情(最好在xml代码中创建DataGrid而不是代码隐藏)?它甚至可能吗?我已经看过ContentControl的一些东西但是我不想在我的用户控件中添加东西我想在另一个Window / UserControl中修改“预定义的”DataGrid。
编辑: 我想要完成的是一个可重用的DataGrid,它已经有一个CheckboxColumn和一个复选框在这个列的标题中。此外,如果选中“header-checkbox”并且可以移交某种类型的操作/布尔值限制,如果可以检查相应的复选框,它应该包含检查列中复选框的逻辑。 / p>