2008-11-29 3 views
2

У меня есть стиль кнопки и не может казаться, что свойство databind имеет свойство CornerRadius границы для шаблона. Это свойство зависимостей, поэтому оно должно быть привязанным к данным. Интересно, не хватает ли мне правильного синтаксиса XAML?Можете ли вы привязать данные к CornerRadius через стили WPF?

<Style TargetType="{x:Type Button}" BasedOn="{x:Null}">   
     <Setter Property="FocusVisualStyle" Value="{DynamicResource MyButtonFocusVisual}"/>  
     <Setter Property="Background" Value="{DynamicResource MyButtonBackgroundBrush}"/>  
     <Setter Property="Foreground" Value="{DynamicResource MyButtonForegroundBrush}"/> 
     <Setter Property="BorderBrush" Value="{DynamicResource MyButtonBorderBrush}"/> 
     <Setter Property="BorderThickness" Value="3"/> 
     <Setter Property="FontFamily" Value="Segoe UI"/>  
     <Setter Property="FontSize" Value="14" /> 
     <Setter Property="CornerRadius" Value="2" /> 
     <Setter Property="Template">   
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <!-- We use Grid as a root because it is easy to add more elements to customize the button --> 
      <Grid x:Name="Grid"> 
      <Border x:Name="Border" CornerRadius="{TemplateBinding CornerRadius}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/> 
      </Grid> 
     </ControlTemplate>    
     </Setter.Value>  
    </Setter>     
    </Style> 

Как и CornerRadius = "{TemplateBinding CornerRadius}" дают мне ошибку "CornerRadius не распознается или не доступен".

+0

WAG здесь ... {TemplateBinding Button.CornerRadius} – Will 2008-11-29 20:04:09

ответ

5

Вы пытаетесь установить/привязать свойство CornerRadius к классу Button, но такого свойства нет. Таким образом, ожидается ошибка.

+1

+1, поможет упомянуть, что вы можете использовать только TemplateBinding со свойствами, которые существуют в элементе управления, который вы разрабатываете. Таким образом, вы не можете точно «изобретать» новые. – user7116 2008-11-30 18:52:28

1

Kent is right. Способом этого является создание собственного пользовательского элемента управления, который наследуется от класса кнопки. Затем внутри этого производного класса создайте свойство зависимостей и зарегистрируйте его в окне для свойства CornerRadius. Затем вы можете использовать приведенный выше код, но вместо установки свойства style в элементе управления Button установите свойство style в производном классе.

Смежные вопросы