我是WPF的新手,我正在努力尋找解決方案,我正在努力做的事情,因爲我仍然對我是否正確地做這件事有點不確定。WPF樣式觸發器TemplateBinding
我有一個按鈕
<Style x:Key="ToolBarButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Margin" Value="5" />
<Setter Property="BorderBrush" Value="White" />
<Setter Property="Background" Value="{DynamicResource CompanyBlue}" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="FontSize" Value="20" />
<Setter Property="Width" Value="100" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="ButtonBorder" BorderThickness="5" CornerRadius="5"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"
Width="{TemplateBinding Width}">
<ContentPresenter Margin="10" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Button.Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,-0.2" EndPoint="0,1.2">
<LinearGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0" />
<GradientStop Color="{ORIGINAL-COLOR}" Offset="0.5" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
在XAML,在那裏我已經把佔位{ORIGINAL-COLOR}
定義瞭如下的風格,我基本上是想這是與{TemplateBinding Background}
二手先前設置控件的值風格的模板。
我見過建議我應該使用{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}
但這不起作用。
在此先感謝您的幫助。
以何種方式是不工作?什麼是信息/錯誤或者它是否默默地失敗。確保你檢查了輸出窗口,因爲這是WPF轉儲大量調試信息的地方。 – pbalaga 2013-03-03 15:21:13
由於'Background'的返回類型是'Brush'而不是'Color',因此不能將'Color'與'Background'屬性綁定。 – 2013-03-03 15:22:17
我得到的錯誤如下:找不到目標元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路徑= Background.Color;的DataItem = NULL;目標元素是'GradientStop'(HashCode = 19346574);目標屬性是'顏色'(類型'顏色') – 2013-03-03 15:29:06