[英]Change DataTemplate for Expander header from Code Behind
我試圖將擴展器從代碼添加到現有的ListBox中。 需要在擴展器標題中顯示的內容來自目錄名稱,該目錄名稱可能包含也可能不包含下划線。 我想保留目錄名稱,但不要將第一個下划線解釋為鍵盤快捷鍵。
我發現此線程討論了如何在xaml中執行此操作,並嘗試在后面的代碼中實現相同的解決方案而沒有任何運氣。
我還發現該線程在討論如何從背后的代碼創建數據模板,但我也無法正常工作。
我嘗試了以下代碼段,但要么無法編譯,要么僅顯示擴展器頭的空白:
String markup = String.Empty;
markup = "<TextBlock text=\"" + directory.Name + "\"/>";
ex.HeaderTemplate = new DataTemplate((DataTemplate)XamlReader.Load(markup));
。
ex.HeaderTemplate = new DataTemplate("TextBlock");
TextBlock tb = new TextBlock();
tb.Text = directory.Name;
ex.Header = tb;
您無需更改HeaderTemplate即可避免將下划線轉換為AccessKey。
將TextBlock顯式添加到Expander.Header中,它將使文本保持不變。
<Expander>
<Expander.Header>
<TextBlock x:Name="ExpanderHeader"/>
</Expander.Header>
</Expander>
這樣,您無需在c#代碼中創建UI元素。
在ExpanderHeader textBlock中更改標題文本
ExpanderHeader.Text = directory.Name;
或綁定它(如果有視圖模型):
<TextBlock x:Name="ExpanderHeader" Text="{Binding Path=...}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.