[英]Binding custom properties while setting custom dependency property in style
在这里,我有一个自定义的依赖项属性,并以此方式进行设置。 我要做的是将自己的属性绑定到您可以在代码中看到的控件。 正如您在代码中看到的那样,我已经尝试了RelativeResource
,但未显示任何内容。 我是否需要使用ControlTemplate
声明目标类型,或者有什么方法可以解决此问题?
资源词典
<Style TargetType="{x:Type infiniteReservoir:PressureSource}">
<Setter Property="PropertyPanel">
<Setter.Value>
<ScrollViewer >
<Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<TextBlock Text="Pressure:" Grid.Row="0"/>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox/>
<ComboBox Grid.Column="1"/>
</Grid>
<TextBlock Text="Temperature:" Grid.Row="1"/>
<Grid Grid.Row="1" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox/>
<ComboBox Grid.Column="1"/>
</Grid>
<TextBlock Text="Label:" Grid.Row="2"/>
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Name}"/>
<TextBlock Text="Media:" Grid.Row="3"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding ToolTip}"/>
<TextBlock Text="Fluid Zone ID:" Grid.Row="4"/>
<TextBlock Grid.Row="4" Grid.Column="1"/>
<TextBlock Text="Port Name:" Grid.Row="5"/>
<TextBox Grid.Row="5" Grid.Column="1"/>
</Grid>
</ScrollViewer>
</Setter.Value>
</Setter>
</Style>
模型
#region PropertyPanel
public ScrollViewer PropertyPanel
{
get { return (ScrollViewer)GetValue(PropertyPanelProperty); }
set { SetValue(PropertyPanelProperty, value); }
}
public static readonly DependencyProperty PropertyPanelProperty = DependencyProperty.Register("PropertyPanel", typeof(ScrollViewer), typeof(DesignerItem));
#endregion
任何帮助,将不胜感激。
TemplatedParent
仅在ControlTemplate中工作。
我怀疑您想要的是:
<Grid
DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type infiniteReservoir:PressureSource}}}">
附带说明一下,绑定DataContext通常被认为是较差的做法,因为这通常会带来意想不到的副作用。 您可以改为在子代上的每个绑定中使用RelativeSource:
<TextBlock Text="Label:" Grid.Row="2"/>
<TextBox
Grid.Row="2"
Grid.Column="1"
Text="{Binding Name, RelativeSource={RelativeSource AncestorType={x:Type infiniteReservoir:PressureSource}}}"
/>
<TextBlock Text="Media:" Grid.Row="3"/>
<TextBlock
Grid.Row="3"
Grid.Column="1"
Text="{Binding ToolTip, RelativeSource={RelativeSource AncestorType={x:Type infiniteReservoir:PressureSource}}}"
/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.