如何正确绑定到MVVM框架中用户控件的依赖项属性

我一直无法找到一个干净,简单的示例,说明如何正确地使用MVVM框架内具有依赖项属性的WPF实现用户控件。每当我为用户控件分配数据上下文时,下面的代码都会失败。


我在尝试着:


从调用ItemsControl设置依赖项属性,然后

使该依赖项属性的值可用于调用的usercontrol的ViewModel。

我还有很多东西要学习,并衷心感谢您的帮助。


这是使用依赖项属性TextInControl调用InkStringView用户控件的最顶层用户控件中的ItemsControl(来自另一个问题的示例)。


   <ItemsControl 

                ItemsSource="{Binding Strings}" x:Name="self" >


        <ItemsControl.ItemsPanel>

            <ItemsPanelTemplate>

                <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical" />

            </ItemsPanelTemplate>

        </ItemsControl.ItemsPanel>



        <ItemsControl.ItemTemplate>

            <DataTemplate>

                <DataTemplate.Resources>

                    <Style TargetType="v:InkStringView">

                        <Setter Property="FontSize" Value="25"/>

                        <Setter Property="HorizontalAlignment" Value="Left"/>

                    </Style>

                </DataTemplate.Resources>


                <v:InkStringView TextInControl="{Binding text, ElementName=self}"  />

            </DataTemplate>

        </ItemsControl.ItemTemplate>

    </ItemsControl>

这是具有依赖项属性的InkStringView用户控件。


 XAML:

<UserControl x:Class="Nova5.UI.Views.Ink.InkStringView"

         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

         x:Name="mainInkStringView"

         mc:Ignorable="d" 

         d:DesignHeight="300" d:DesignWidth="300">

<Grid>

    <Grid.RowDefinitions>

        <RowDefinition/>   

        <RowDefinition/>

    </Grid.RowDefinitions>


    <TextBlock Grid.Row="0" Text="{Binding TextInControl, ElementName=mainInkStringView}" />

    <TextBlock Grid.Row="1" Text="I am row 1" />

</Grid>


呼啦一阵风
浏览 944回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP