0

Buttonクラス用に、xamlでカスタムスタイルを作成しました。関連する部分は次のとおりです。

<Rectangle
    Stroke="{TemplateBinding BorderBrush}"
    StrokeThickness="{TemplateBinding BorderThickness}"/>

StrokeThicknessdoubleBorderThicknessがであるため、明らかにこれは機能しませんThickness

コンバーターをいじることなく、厚さの実際の値(常に均一になります)にバインドするにはどうすればよいですか?

完全な重複としてマークする前に、この質問は異なります。

4

2 に答える 2

5

これを試して:

<Rectangle
    Stroke="{TemplateBinding BorderBrush}"
    StrokeThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, 
        Path=BorderThickness.Left}"/>

ノート

次のバインディング

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=MyProperty}

と同じです

{TemplateBinding MyProperty}
于 2012-10-04T23:28:11.950 に答える
0

どうですか

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:Con x:Key="abc" />
    </Window.Resources>
    <Grid>
        <Rectangle StrokeThickness="{Binding abc, Converter={StaticResource abc}}"/>
    </Grid>
</Window>


namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DataContext = new { abc = new Thickness(4) };
        }
    }    

    public class Con : IValueConverter
    {
        public object Convert(object value, Type targetType, 
                              object parameter, 
                              System.Globalization.CultureInfo culture)
        {
            return ((Thickness)value).Left;
        }

        public object ConvertBack(object value, 
                                  Type targetType, 
                                  object parameter, 
                                  System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
于 2012-10-04T12:21:50.977 に答える