ListView DataTemplate inter UserControl не может связываться - PullRequest
0 голосов
/ 11 марта 2019

У меня есть эта проблема:

У меня есть ListView элемент управления в форме.В DataTemplate этого ListView есть CustomControl.Я хочу, чтобы этот пользовательский элемент управления был привязан к свойству Time в ViewModel текущей формы, но он не может быть привязан, но DataTemplate Другие элементы управления в середине могут быть связаны, что происходит?Я буду очень признателен

Вот мое окно:

    <ListView Grid.Row="2" 
              ItemsSource="{Binding PlanRotation}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="20 0 0 0" Orientation="Horizontal">
                    <TextBlock HorizontalAlignment="Center" Text="时间:" VerticalAlignment="Center" FontWeight="Bold" />
                    <TimeControl:DateTimePicker  Tag="{Binding ElementName=myWin,Path=DataContext.Time,Mode=OneWayToSource}"
                                                 HorizontalAlignment="Center"
                                                 Height="28"
                                                 VerticalAlignment="Center"
                                                 Width="152" 
                                                 Foreground="White"
                                                 BorderThickness="1"
                                                 BorderBrush="#FFABADB3" 
                                                 Background="Black" 
                                                 Grid.Column="1"/>                     

                    <ComboBox Text="{Binding ElementName=myWin,Path=DataContext.Scenes,Mode=OneWayToSource}"
                              HorizontalAlignment="Center" 
                              VerticalAlignment="Center" 
                              Width="80" 
                              Height="21">                       
                    </ComboBox>

Вот мой код CustomControl TimeControl:DateTimePicker:

    <UserControl x:Class="ManagementProject.UserControls.TimeControl.DateTimePicker"
         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" 
         xmlns:local="clr-namespace:ManagementProject.UserControls.TimeControl"
         xmlns:myTime="clr-namespace:ManagementProject.UserControls.TimeControl"
         xmlns:sys="clr-namespace:System;assembly=mscorlib"
         mc:Ignorable="d" 
         d:DesignHeight="25" 
         d:DesignWidth="150" 
         Width="150"
         MaxHeight="25"
         x:Name="dtpName"
         Loaded="UserControl_Loaded" Tag="{Binding ElementName=textBlock1, Path=Text}">
           <TextBox 
        Height="23" 
        HorizontalAlignment="Left" 
        Text="{Binding ElementName=dtpName,Path=Tag,Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}"
        Margin="4,3,0,0" 
        Name="textBlock1"  
        VerticalAlignment="Top" 
        Width="123" Foreground="White" Background="{x:Null}" BorderBrush="{x:Null}" SelectionBrush="{x:Null}" Style="{DynamicResource TextBoxStyle1}" />

Мой пользовательский элемент управления TextBox 's Текст - это задание в фоновом режиме.

1 Ответ

0 голосов
/ 17 июля 2019

Я мог получить прямую привязку для работы с пользовательским элементом управления только при его инициализации.В итоге я создал свойство зависимости, чтобы иметь возможность обновлять пользовательский элемент управления извне.

internal List<User> ContactlistContainer
        {
            get => (List<User>)GetValue(ContactlistContainerProperty);
            set => SetValue(ContactlistContainerProperty, value);
        }

internal static readonly DependencyProperty ContactlistContainerProperty =
                DependencyProperty.Register("ContactlistContainerProperty", typeof(List<User>), typeof(User), new PropertyMetadata(new List<User>()));
...