我正在開發windows phone 8應用程序。我有一個客戶UserControl
叫SelectableButton
。它的構造函數如下:樞軸中的用戶控件,綁定不起作用
public SelectableButton()
{
InitializeComponent();
DataContext = this;
}
它的XAML是這樣的:
<Grid>
<TextBlock x:Name="ButtonTextBlock"
Text="{Binding SelectableButtonText, Mode=TwoWay}"
SomeOtherCode
/>
...
</Grid>
的SelectableButtonText
是這個UserControl
的屬性:
public static readonly DependencyProperty SelectableButtonTextProperty =
DependencyProperty.Register(
"SelectableButtonText", typeof(string),
typeof(SelectableButton),
null
);
現在我用這個SelectableButton
在Pivot
中。我想將SelectableButtonText
屬性綁定到某些數據。這是一個Pivot
使用的DataTemplate
稱爲PivotTestContent
:
<ShareControl:SelectableButton
SelectableButtonText="{Binding question}"
...
>
</ShareControl:SelectableButton>
的question
是從這個Pivot
的ItemsSource
:
PivotTestContent.ItemsSource = quizs;
的quizs
是WCCQuizText
quizs = new List<WCCQuizText>();
而一個List<>
question
是WCCQuizText
屬性成員:
public String question
{
get;
set;
}
畢竟這些工作,我發現Binding
不能找物業question
。看來,因爲這條線的SelectableButton
構造函數:
DataContext = this;
的結合將尋找物業question
在SelectableButton
類,而不是從ItemsSouce
。因爲如果我將question
直接綁定到某個TextBlock.Text
,它將起作用。但是當我將它綁定到我的UserControl時,找不到它。 那麼有人知道如何處理這個?
如果我這樣做,我可以正確顯示綁定文本,TextBlock也在Pivot中。
<TextBlock
Name="TextBlockQuestion"
Text="{Binding question}"
....
>
</TextBlock>
我的綁定:
<ShareControl:SelectableButton
SelectableButtonText="{Binding Text, ElementName=TextBlockQuestion}"
....
>
</ShareControl:SelectableButton>
您好@dkozl,感謝您的快速回復。爲什麼我添加DataContext = this;在我的usercontrol的構造函數中是因爲我必須將一些控件的屬性綁定到它的DependencyProperties,而不僅僅是Text。所以我想如果我刪除這一行,我必須在xaml中做一些工作。有什麼建議麼? – Vigor
如果你刪除'DataContext = this;'給UserControl一個名字,那麼你就可以象'SelectableButtonText'那樣通過'ElementName'來綁定其他的控件屬性。這就是你如何保持當前'DataContext'並且仍然綁定'UserControl'屬性。 – dkozl
嗨@dkozl,我想我知道你的意思吧!非常感謝你。 – Vigor