Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从代码隐藏访问xaml中的未命名控件_C#_Wpf_Xaml_Combobox - Fatal编程技术网

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()。