gpt4 book ai didi

c# - WPF - 将 Datagrid Items.Count 绑定(bind)到自定义控件标签

转载 作者:太空狗 更新时间:2023-10-30 00:21:43 25 4
gpt4 key购买 nike

我是 wpf 的新手,并尝试将静态定义的 DataGrid 的 Items.Count 属性绑定(bind)到我的自定义控件的标签。

我当前的实现如下所示。但是标签保持为空:我

定义 DataGrid 的类:

public class BindingNavigator : Control
{
private static DataGrid dataGrid;

static BindingNavigator()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(BindingNavigator), new FrameworkPropertyMetadata(typeof(BindingNavigator)));
}

public DataGrid DataGrid
{
set { dataGrid = value; }
get { return dataGrid; }
}
}

要在标签中显示 Items.Count 的 CustomControl 的 XAML

<Style TargetType="{x:Type local:BindingNavigator}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:BindingNavigator}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid MinWidth="210" MinHeight="50">
<Label Width="30" Height="30" Content="{Binding ElementName=DataGrid, Path=Items.Count}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

我部署自定义控件的 XAML

    <DataGrid Name="dataGrid1" VerticalAlignment="Top" Width="210">
<DataGrid.Columns>
<DataGridTextColumn Header="header" />
</DataGrid.Columns>
</DataGrid>
<my:BindingNavigator Name="bindingNavigator1" />
</Grid>

我填充网格并设置自定义控件的 DataGrid 属性的事件处理程序背后的代码

    private void Window_Loaded(object sender, RoutedEventArgs e)
{
dataGrid1.Items.Add("1");
dataGrid1.Items.Add("2");

bindingNavigator1.DataGrid = dataGrid1;
}

为什么我不能将 Items.Count 属性绑定(bind)到标签?

最佳答案

您需要做的就是将 ElementName 的值更改为 DataGrid 的实际名称(即 dataGrid1 而不是 DataGrid)。

    <Label Width="30" Height="30" 
Content="{Binding ElementName=DataGrid, Path=Items.Count}" />

这是一个完整的示例:

  <Grid>
<Grid.Resources>
<Style TargetType="{x:Type local:BindingNavigator}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:BindingNavigator}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid MinWidth="210" MinHeight="50">
<Label Width="30" Height="30"
Content="{Binding ElementName=dataGrid1, Path=Items.Count}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

</Grid.Resources>
<StackPanel>
<DataGrid Name="dataGrid1" VerticalAlignment="Top" Width="210">
<DataGrid.Columns>
<DataGridTextColumn Header="header" />
</DataGrid.Columns>
</DataGrid>
<local:BindingNavigator x:Name="bindingNavigator1" />
</StackPanel>
</Grid>

关于c# - WPF - 将 Datagrid Items.Count 绑定(bind)到自定义控件标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com