簡體   English   中英

從后面的代碼訪問XAML中的未命名控件

[英]Access unnamed control in xaml from code behind

我在ComboBox下面有大約20個以下內容(這意味着由於重復的命名,我無法使用任何x:Name參數):

<ComboBoxItem>
    <StackPanel Orientation="Horizontal">
        <Image Source="folder/someimage.png" Height="20" Width="20"/>
        <TextBlock Text="SampleText" Margin="5,0,0,0"/>
    </StackPanel>
</ComboBoxItem>

如何從SelcetionChanged事件中的TextBlock訪問字符串?

當前,當我正常選擇項目時,(我的ComboBox )選定文本設置為

System.Windows.Controls.ComboBoxItem

這是ComboBoxItem.ToString()方法的返回值!

如何更改基於xamlComboBoxItem的返回類型?

經過長期的研究,我找到了解決方案。 我創建了一個新的UserControl ,然后將其添加為ComboBox

MyComboBoxItem.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>

MyComboBoxItem.xaml.cs:

public string Text
{
    get { return txt.Text; }
    set { txt.Text = value; }
}

public override string ToString()
{
    return Text;
}

MainWindow.xaml:

<ComboBox>
    <local:MyComboBoxItem Image="image1.png" Text="Item1"/>
    <local:MyComboBoxItem Image="image2.png" Text="Item2"/>
    <local:MyComboBoxItem Image="image3.png" Text="Item3"/>
</ComboBox>

現在,它就像一種魅力一樣工作,並且完全滿足我的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM