Binding and style doesn't work for Win8?

2019-02-20 13:02发布

问题:

I derived from a TextBox and called it MyTextBox. On my LayoutAwarePage I created 2 SolidColorBrush props: MyBackground and MyBorder. In the Xaml of that page I wrote a ResourceDictionary with style to the control MyTextBox:

 <Grid.Resources>
        <ResourceDictionary>
            <Style TargetType="a:MyTextBox">
                <Setter Property="Background" Value="{Binding MyBackground}"></Setter>
                <Setter Property="BorderBrush" Value="{Binding MyBorder}"></Setter>
                <Setter Property="Width" Value="200"></Setter>
                <Setter Property="IsReadOnly" Value="False"></Setter>
                <Setter  Property="BorderBrush" Value="3"></Setter>
            </Style>
        </ResourceDictionary>
    </Grid.Resources>

When I run this page I can't see the control. I didn't forget to create a DataContext for the page, and the properties are true colors (not black). Any idea how to solve this?

回答1:

Binding in Style Setters is not supported in WinRT.



回答2:

<Grid.Resources>
        <ResourceDictionary>
            <Style TargetType="a:MyTextBox">
                <Setter Property="Background" Value="{StaticResource MyBackground}"></Setter>
                <Setter Property="BorderBrush" Value="{StaticResource MyBorder}"></Setter>
                <Setter Property="Width" Value="200"></Setter>
                <Setter Property="IsReadOnly" Value="False"></Setter>
                <Setter  Property="BorderBrush" Value="3"></Setter>
            </Style>
        </ResourceDictionary>
    </Grid.Resources>

Try this

And inside App.xaml do <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Common/StandardStyles.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>

And create a file called standard styles inside your common dir and declare your brushes there (you can actually declare everything there