locked
Создание пользовательских элементов управления. Как сделать поддержку Binding? RRS feed

  • Вопрос

  • Добрый день!

    Создаю свой контрол, который наследуется от UserControl. Определил свойство, оно принимает значение при присвоении  в коде, а при биндинге через xaml - нет. Даже в конструкторе привязки данных, скрыт пункт "Create Data Binding".

    Как сделать поддержку биндинга данных?

    29 августа 2013 г. 11:13

Ответы

  • Binding error"ов в Output нет?

    ---

    Сделал так:

    <UserControl x:Class="PhoneApp5.WindowsPhoneControl1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        d:DesignHeight="480" d:DesignWidth="480"
                 x:Name="MyUserControl">
        
        <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
            <TextBlock Text="{Binding MyTestProperty, ElementName='MyUserControl'}"
                       Foreground="Red"/>
        </Grid>
    </UserControl>

    Биндинг работает.

    Вот проект - Binding in UserControl sample


    • Изменено Oleg Kurzov 29 августа 2013 г. 12:04
    • Помечено в качестве ответа V.A.Zolotov 29 августа 2013 г. 12:53
    29 августа 2013 г. 11:38

Все ответы

  • Binding error"ов в Output нет?

    ---

    Сделал так:

    <UserControl x:Class="PhoneApp5.WindowsPhoneControl1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        d:DesignHeight="480" d:DesignWidth="480"
                 x:Name="MyUserControl">
        
        <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
            <TextBlock Text="{Binding MyTestProperty, ElementName='MyUserControl'}"
                       Foreground="Red"/>
        </Grid>
    </UserControl>

    Биндинг работает.

    Вот проект - Binding in UserControl sample


    • Изменено Oleg Kurzov 29 августа 2013 г. 12:04
    • Помечено в качестве ответа V.A.Zolotov 29 августа 2013 г. 12:53
    29 августа 2013 г. 11:38
  • Ошибок биндинга нет.

    просто в контроле у меня вот так:

    <Grid x:Name="LayoutRoot" Background="#1133CC" Canvas.ZIndex="1" Width="200" Height="200" MouseEnter="Front_MouseEnter">
            <Grid Name="Front" Width="200" Height="200" HorizontalAlignment="Left" VerticalAlignment="Top">
                <Grid.Projection>
                    <PlaneProjection x:Name="planePanel" RotationX="0" />
                </Grid.Projection>
                <Image Name="img1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="-5, 10, 0, 0" Width="120" Height="120" Source="/Images/setting.png" />
                <TextBlock Name="txt1" Margin="0, 0, 5, 10" Text="Settings" Width="100" VerticalAlignment="Bottom" HorizontalAlignment="Right" FontFamily="Segoe UI" FontSize="26" />
            </Grid>
            <Grid Name="Back" Margin="0, 0, 0, 0" Width="200" Height="200" HorizontalAlignment="Left" VerticalAlignment="Top">
                <Grid.Projection>
                    <PlaneProjection x:Name="planePanel2" RotationX="90" />
                </Grid.Projection>
                <TextBlock Name="txt2" Margin="10, 10, 10, 10" TextWrapping="Wrap" Text="Configure your settings here." Width="180" HorizontalAlignment="Left" FontFamily="Segoe UI" FontSize="17" />
            </Grid>
    
        </Grid>
    Наверное страница не биндит данные из за того что текстбоксу контрола нужно биндить свойства  класса

    29 августа 2013 г. 12:52