Можете ли вы привязать данные к CornerRadius через стили WPF? - PullRequest
2 голосов
/ 29 ноября 2008

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

<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 не распознан или недоступен".

Ответы [ 2 ]

5 голосов
/ 30 ноября 2008

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

1 голос
/ 02 декабря 2008

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

...