gpt4 book ai didi

c# - 从具有标识名称的 DataTemplate 中访问控件

转载 作者:行者123 更新时间:2023-12-02 05:37:44 24 4
gpt4 key购买 nike

在我的 WPF 应用程序中,我有一个位于网格控件内的 ComboBox 控件。在 XAML 中,我为 ComboBox 指定了一个名称:

<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" Text="{Binding name_ru}" Width="Auto" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Name="stcom" Style="{DynamicResource ComboBoxStyle}" SelectionChanged="status_SelectionChanged" Height="auto" Width="Auto">
<ComboBox.BorderBrush>
<SolidColorBrush Color="{DynamicResource Color1}"/>
</ComboBox.BorderBrush>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

使用 FindName(string) 方法,我试图用关联名称引用 ComboBox:

ComboBox stcom
{
get
{
return (ComboBox)FindName("stcom");
}
}


if (stcom != null)
{
stcom.ItemsSource = list;
}

但显然找不到控件,因为引用 stcom 仍然为空。

现在的问题是如何使用名称属性来引用我的组合框?

最佳答案

答案是:

<Style x:Key="CheckBoxStyle1" TargetType="{x:Type CheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<Grid>
<TextBlock Name="tbUserIcon" Text="t1" />
<TextBlock Name="tbCheck" Text="✓" />
</Grid>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

和 C#:

checkBox.ApplyTemplate();
var tbUserIcon= (TextBlock)checkBox.Template.FindName("tbUserIcon", checkBox);

不要忘记在 Template.FindName() 之前使用 checkBox.ApplyTemplate() 这很重要!

关于c# - 从具有标识名称的 DataTemplate 中访问控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11428707/

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