2
在我的項目中,我有一個自定義控件,它是一個擴展器。按鈕的內容會使控件展開或摺疊,這取決於狀態。我得到了大部分工作,但是我無法將文本綁定到我用於該按鈕的內容。無法將WPF TextBlock綁定到屬性
這裏是我的XAML的代碼從Generic.xaml:
<ControlTemplate x:Key="PndExpanderControlVertical" TargetType="{x:Type local:PndExpanderControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<dx:DXExpander x:Name="expander" Grid.Column="0" FlowDirection="LeftToRight" VerticalExpand="None" HorizontalExpand="FromLeftToRight" IsExpanded="True">
<dxlc:GroupBox x:Name="group_box" Padding="0" Header="Header"/>
</dx:DXExpander>
<Button Grid.Column="1" Padding="1" x:Name="expand_button">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<!-- Button-Style, expanded -->
<DataTrigger Binding="{Binding IsExpanded, ElementName=expander}" Value="True">
<Setter Property="Content" Value="↧ ↧"/>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="90"/>
</Setter.Value>
</Setter>
</DataTrigger>
<!-- Button-Style, collapsed -->
<DataTrigger Binding="{Binding IsExpanded, ElementName=expander}" Value="False">
<Setter Property="Content">
<Setter.Value>
<TextBlock>
<TextBlock Text="↥ "/>
<TextBlock Text="{Binding Header, ElementName=group_box}"/>
<TextBlock Text=" ↥"/>
</TextBlock>
</Setter.Value>
</Setter>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="90"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</Border>
</ControlTemplate>
正如你可以看到我使用嵌套文本塊到group_box的頭球一些箭頭組合。但是,中間文本塊的綁定不起作用。
說實話,我現在用WPF工作了一段時間,但是數據綁定(到正確的源碼)對我來說仍然是一個謎。大部分時間我都會以某種方式工作,但如果失敗了,我不知道該怎麼做。我搜索了幾個小時,嘗試了各種各樣的東西,但沒有爲我工作。
任何幫助表示讚賞。
可惜,這是行不通的。輸出說:「System.Windows.Data錯誤:4:找不到與引用綁定的源'ElementName = expander'。BindingExpression:Path = Content.Header; DataItem = null;目標元素爲'TextBlock'(Name ='');目標屬性是'文本'(類型'字符串')「 – Takiro
謝謝,這完美的作品。你能解釋爲什麼必須使用x:Reference嗎?從我在快速搜索中找到的ElementName和x:Reference的工作基本相同。 MSDN也表示:「對於大多數WPF應用程序和場景,仍應使用ElementName綁定。」 – Takiro
有關ElementName和x之間區別的信息,請參閱以下問題:參考:http://stackoverflow.com/questions/19244111/what-is-the-difference-between-xreference-and-elementname – mm8