0

ユーザーコントロールでグリッドビューを生成するコードがあります:

 <ListView x:Name="ListView" SelectionMode="None">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                            <UserControls:ItemTemplateControl Parametr="XXXXXXX"/>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Listview は正常に動作しますが、UserControl に何も送信できません。ユーザー コントロール コード:

public sealed partial class ItemTemplateControl : UserControl
    {
        public string Parametr
        {
            get
            {
                return (string)GetValue(ParametrProperty);
            }
            set
            {
                SetValue(ParametrProperty, value);
            }
        }
        public static DependencyProperty ParametrProperty = DependencyProperty.Register("Parametr", typeof(string), typeof(ItemTemplateControl), new PropertyMetadata(""));


        public ItemTemplateControl()
        {
            this.InitializeComponent();
            post_text.Text = Parametr;
            Get();
        }

このコードは機能しません。どこに問題があるのですか?

私の英語でごめんなさい

<Page
    x:Class="App13.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App13"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:UserControls="using:App13.UserControls"
    mc:Ignorable="d">
4

1 に答える 1

1

依存関係プロパティが変更されたときのコールバックを登録したいと思いますParametr。これを行うには、次のことを行う必要があります。

public static DependencyProperty ParametrProperty = DependencyProperty.Register("Parametr", typeof(string), typeof(ItemTemplateControl), new PropertyMetadata("", ParametrChanged));

そして、ParametrChangedメソッドでいくつかのロジックを定義します

private static void ParametrChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
       var sender = d as ItemTemplateControl;
       if (sender == null) return;

       var newValue = e.NewValue as string;
       sender.post_text.Text = newValue;
}
于 2013-10-01T10:39:31.133 に答える