2016-10-27 76 views
0

附加屬性我試圖延長文本框默認樣式 https://msdn.microsoft.com/en-us/library/windows/apps/mt299154.aspxUWP在ControlTemplate中

我喜歡對子級有圓形的文本框的角落。

     <Border 
         x:Name="BackgroundElement" 
         Grid.Row="1" 
         Background="{TemplateBinding Background}" 
         Margin="{TemplateBinding BorderThickness}" 
         CornerRadius="{Binding Source={RelativeSource TemplatedParent}, Path=(icp:IcpExtend.CornerRadius)}" 
         Opacity="{ThemeResource TextControlBackgroundRestOpacity}" 
         Grid.ColumnSpan="2" 
         Grid.Column="0" /> 
        <Border 
         x:Name="BorderElement" 
         Grid.Column="0" 
         Grid.Row="1" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         CornerRadius="{Binding Source={RelativeSource TemplatedParent}, Path=(icp:IcpExtend.CornerRadius)}" 
         Grid.ColumnSpan="2" /> 

下面是附加屬性類

[Bindable] 
public class IcpExtend 
{ 
    public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.RegisterAttached(
     "CornerRadius", typeof(CornerRadius), typeof(IcpExtend), new PropertyMetadata(default(CornerRadius))); 

    public static void SetCornerRadius(DependencyObject element, CornerRadius value) 
    { 
     element.SetValue(CornerRadiusProperty, value); 
    } 

    public static CornerRadius GetCornerRadius(DependencyObject element) 
    { 
     return (CornerRadius) element.GetValue(CornerRadiusProperty); 
    } 
} 

這是

 <TextBox 
     icp:IcpExtend.CornerRadius="10" 
     Grid.Row="0" 
     Grid.Column="1"    
     PlaceholderText="Email" 
     InputScope="EmailSmtpAddress" 
     IsSpellCheckEnabled="False" 
     Text="{Binding Path=Email, Mode=TwoWay}" /> 

的解決方案是不工作(角不四捨五入)頁面上的文本框元素...如何綁定到默認樣式 - > ControlTemplate?中的附加屬性

回答

0

這應該有效。如果您在模板中硬編碼CornerRadius,它會起作用嗎?如果沒有,那麼你的風格有問題。您應該將TextBox樣式放入App.xaml資源中,樣式應該只有TargetType="TextBox"且沒有任何鍵。你

也應該能夠使用TemplateBinding代替的RelativeSource模板:

CornerRadius="{TemplateBinding icp:IcpExtend.CornerRadius}" 

另一件事要記住的是,這種風格是Windows SDK 10586(該網頁上提到)。我使用SDK 14393,TextBox控件的默認樣式與SDK 10586中的不同。請確保您使用的是正確的樣式。您可以在C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.?????.0\Generic\generic.xaml中找到樣式。

+0

我已經花了8小時在這....噸。昨晚常量有效,但綁定不是(TemplateBinding和Binding Source = {RelativeSource TemplatedParent})現在我再次運行VS - 我上面的示例沒有工作,但CornerRadius =「{TemplateBinding icp:IcpExtend.CornerRadius}」開始工作(這是我試圖找到其他東西之前我的第一種綁定類型)。 –

相關問題