[英]Getting class name instead of property value in XAML binding with TabControl
我的XAML中有以下TabControl
,試圖在其中獲取標簽頭以顯示Sequence
類的Name屬性。 我的ViewModel返回一個ObservableCollection<Sequence>
。 但是由於某種原因,我在標簽頁標題中出現了“ Sequencer.Common.SequenceDocument.Sequence”。
Sequence
類具有Name
屬性,我知道它返回正確的名稱,但是我在ItemHeader
綁定中缺少某些ItemHeader
嗎?
<dx:DXTabControl x:Name="TabControl"
ItemsSource="{Binding Sequences}"
SelectionChanged="TabControl_OnSelectionChanged">
<dx:DXTabControl.View>
<dx:TabControlMultiLineView HeaderLocation="Bottom"/>
</dx:DXTabControl.View>
<dx:DXTabControl.ItemContainerStyle>
<Style TargetType="dx:DXTabItem">
<Setter Property="Header" Value="{Binding Name}"/>
</Style>
</dx:DXTabControl.ItemContainerStyle>
<!--Content-->
<dx:DXTabControl.ItemTemplate>
<DataTemplate>
<Grid>
<views:DxTaskList x:Name="Tasklst" />
</Grid>
</DataTemplate>
</dx:DXTabControl.ItemTemplate>
</dx:DXTabControl>
根據DevExpress文檔 ,您正在設置ItemContainerStyle
:
應用於為每個選項卡項生成的容器元素的樣式
但是,您要實現的是獲取選項卡標題以顯示我的Sequence類的Name屬性 。
為了完成這一點 ,你需要設置ItemHeaderTemplate
的財產DXTabControl
:
<dx:DXTabControl>
<dx:DXTabControl.ItemHeaderTemplate>
<TextBlock Text="{Binding Name}"/>
</dx:DXTabControl.ItemHeaderTemplate>
</dx:DXTabControl>
但是,為什么您的班級名稱顯示在標題中?
由於您沒有為選項卡項目指定標題模板,因此控件使用了類的ToString()
/字符串表示形式。 通常,字符串表示形式是完整的合格類名稱。 因此,您看到的是類名,而不是Name
屬性。
重載ToString
方法也可以解決您的問題,但這不是真正的解決方案。
您使用的ItemContainerStyle用於設置列表的每個項目的樣式。
您需要為此定義模板,並且綁定應類似於
<!--Content-->
<dx:DXTabControl.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Name}"/>
<views:DxTaskList x:Name="Tasklst" />
</Grid>
</DataTemplate>
</dx:DXTabControl.ItemTemplate>
樣式中的setter屬性的值無法綁定。
但是將Name綁定到文本塊肯定會為您提供Sequence Collection中包含的Sequence類中的所有Name。
您可以在ItemsSource
嘗試Sequences.Name
(或屬性的任何名稱)嗎?
所以看起來像:
<dx:DXTabControl x:Name="TabControl"
ItemsSource="{Binding Sequences.Name}"
SelectionChanged="TabControl_OnSelectionChanged">
我的直覺是您要綁定到類本身,即“ Sequencer.Common.SequenceDocument.Sequence”(就像您執行Sequence.toString()一樣),它將返回對象名稱本身。
綁定必須是一個屬性,這是一個有關綁定內容的好教程,您可能想在“屬性路徑語法”部分下查找。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.