我可以綁定到名稱屬性? 這似乎並不工作:WPF:如何綁定到名稱屬性
<TextBlock Name="FordPerfect" Text="{Binding Path=Name, Mode=OneWay}"/>
我做錯什麼了嗎?
編輯:
添加ElementName=FordPerfect"
解決的問題。我不明白爲什麼只有綁定到Name
需要這個,而其他屬性不需要。
注:移動的第二(設計)問題another question(這裏我應該擺在第一次...)
感謝
我可以綁定到名稱屬性? 這似乎並不工作:WPF:如何綁定到名稱屬性
<TextBlock Name="FordPerfect" Text="{Binding Path=Name, Mode=OneWay}"/>
我做錯什麼了嗎?
編輯:
添加ElementName=FordPerfect"
解決的問題。我不明白爲什麼只有綁定到Name
需要這個,而其他屬性不需要。
注:移動的第二(設計)問題another question(這裏我應該擺在第一次...)
感謝
我想試試這個:
<TextBlock Name="FordPerfect"
Text="{Binding ElementName=FordPerfect, Path=Name, Converter={StaticResource conv}, Mode=OneWay}"/>
這樣,您的TextBlock將成爲綁定的上下文。 如果它不起作用,請觀察輸出窗口,您應該發現綁定錯誤!
解決了,但爲什麼? (看我的編輯) – 2011-03-21 11:36:12
我很驚訝它與其他屬性在第一個地方工作。基本上,綁定需要一個源。要麼你明確地修復source或elementName,要麼修復DataContext。 – 2011-03-21 11:41:02
下面是綁定概述的一個很好的開始:http://msdn.microsoft.com/en-us/library/ms752347.aspx – 2011-03-21 11:43:55
你可能會更容易地做到了這一點:
<TextBlock Name="FordPerfect"
Text="{Binding Name, Converter={StaticResource conv}, Mode=OneWay, RelativeSource={RelativeSource Self}}"/>
至於爲什麼:該文本框」的DataContext是不會自動文本框本身。因此綁定到Name
嘗試綁定到whateverObjectInDataContext.Name
。因此,無論您設置的DataContext事先喜歡:
<TextBlock Name="FordPerfect" DataContext={Binding RelativeSource={RelativeSource Self}}
Text="{Binding Name, Converter={StaticResource conv}, Mode=OneWay}"/>
...或者直接設置來源爲綁定
您遇到的問題是Binding
,默認情況下,使用元素的DataContext
它被用作源代碼。但是,您希望綁定源自身爲TextBlock
元素。
WPF有一個名爲RelativeSource
的類,顧名思義,它將源設置爲綁定。您可以選擇的其中一種關係是Self
,它完全符合您的要求:將綁定的來源設置爲其使用的元素。
下面的代碼:
<TextBlock Name="FordPerfect" Text="{Binding Name, RelativeSource={RelativeSource Self}}" />
既然你已經設置與RelativeSource
源,指定ElementName
你不需要。您也不需要Mode=OneWay
,因爲TextBlock.TextProperty
已經默認爲單向,因爲它只是輸出。
希望這會有所幫助!
它應該工作。你是否正確設置了元素/對象的DataContext?或者你有沒有設置它? – grizzly 2011-03-21 11:08:36
如果我使用不同的屬性(例如保證金),它可以工作... – 2011-03-21 11:22:47
嗨!增加了一個新的答案,可能比接受的答案更合適,因爲它依賴於指定元素名稱。使用類型爲'Self'的RelativeSource可以達到同樣的效果,但更乾淨,並且具有更好的可重用性,因爲它也可用於樣式中。 – MarqueIV 2017-01-21 06:18:54