C# 从代码隐藏访问xaml中的未命名控件
我在C# 从代码隐藏访问xaml中的未命名控件,c#,wpf,xaml,combobox,C#,Wpf,Xaml,Combobox,我在组合框下有大约20个以下参数(这意味着由于重复命名,我不能使用任何x:Name参数): 如何从selectionchanged事件中的TextBlock访问字符串 当前,当我正常选择项目时,(我的组合框的)所选文本设置为 System.Windows.Controls.ComboBoxItem 这是来自ComboBoxItem.ToString()方法的返回值 如何更改基于xaml的ComboBoxItem的返回类型?经过长期研究,我找到了一个解决方案。我创建了一个新的用户控件,然后将其
组合框下有大约20个以下参数(这意味着由于重复命名,我不能使用任何x:Name
参数):
如何从selectionchanged
事件中的TextBlock
访问字符串
当前,当我正常选择项目时,(我的组合框
的)所选文本设置为
System.Windows.Controls.ComboBoxItem
这是来自ComboBoxItem.ToString()方法的返回值
如何更改基于xaml
的ComboBoxItem
的返回类型?经过长期研究,我找到了一个解决方案。我创建了一个新的用户控件
,然后将其添加为我的组合框
的一项
mycomboxItem.xaml:
<StackPanel Orientation="Horizontal">
<Image x:Name="img" Source="{Binding Image, ElementName=myComboBoxItem}" Height="18" Width="18"/>
<TextBlock x:Name="txt" Text="{Binding Text, ElementName=myComboBoxItem}" Margin="5,0,0,0"/>
</StackPanel>
public string Text
{
get { return txt.Text; }
set { txt.Text = value; }
}
public override string ToString()
{
return Text;
}
<ComboBox>
<local:MyComboBoxItem Image="image1.png" Text="Item1"/>
<local:MyComboBoxItem Image="image2.png" Text="Item2"/>
<local:MyComboBoxItem Image="image3.png" Text="Item3"/>
</ComboBox>
MainWindow.xaml:
<StackPanel Orientation="Horizontal">
<Image x:Name="img" Source="{Binding Image, ElementName=myComboBoxItem}" Height="18" Width="18"/>
<TextBlock x:Name="txt" Text="{Binding Text, ElementName=myComboBoxItem}" Margin="5,0,0,0"/>
</StackPanel>
public string Text
{
get { return txt.Text; }
set { txt.Text = value; }
}
public override string ToString()
{
return Text;
}
<ComboBox>
<local:MyComboBoxItem Image="image1.png" Text="Item1"/>
<local:MyComboBoxItem Image="image2.png" Text="Item2"/>
<local:MyComboBoxItem Image="image3.png" Text="Item3"/>
</ComboBox>
现在,它就像一个符咒,完全符合我的要求。当您从XAML填充该组合时,您可以使用x:Name
。有什么问题吗?@henkholtman,如果我使用x:Name=“txt”
作为comboBox.SelectedItem=txt.Text从后面访问它代码>这将适用于第一项,但由于重复命名,所有其他项都将失败(只有一个代码>文本块< /代码>可以命名为“代码> TXT< <代码> >…<代码> TXT2…>代码> TXT3……插入XAML的块20次。考虑将MVVM应用为亨克建议。BTW如果您继承了<代码> CuBox Box < /C> >,您可以重写<代码> toStrug()。