У меня есть DataTemplate в App.xaml:Связывание с DataTemplate динамически создается UserControl Property
<DataTemplate DataType="{x:Type local2:DirectoryFilesViewModel}">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" Height="Auto">
<TextBlock DockPanel.Dock="Top"><Hyperlink Style="{StaticResource ButtonHype}"
Command="{Binding ClickCommand}"><InlineUIContainer>
<Image Source="{Binding FolderImage}" VerticalAlignment="Center" Stretch="Uniform"
RenderOptions.BitmapScalingMode="HighQuality" RenderTransformOrigin=".5,.5"
ToolTip="Disc" Margin="7,9,0,0" Height="27" />
</InlineUIContainer></Hyperlink></TextBlock>
<TextBlock Text="{Binding DiscName}" FontSize="2" Margin="8,10,0,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.7" Storyboard.TargetProperty="FontSize" To="20" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
<ListBox ItemsSource="{Binding DiscFiles}" >
<ListBox.ItemTemplate>
<DataTemplate>
<controls:MemberListItem /> // Need to bind to a TextBlock in this Control
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
/DataTemplate>
Все отлично, кроме ListBox UserControl ... как не могу Привязать к TextBlock внутри него. Может ли кто-нибудь указать мне в правильном направлении?
UserControl:
<UserControl x:Class="Music.Controls.MemberListItem"
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:local2="clr-namespace:MusicMurfer.ViewModels"
mc:Ignorable="d"
d:DesignHeight="30" d:DesignWidth="300" Height="32" Width="Auto">
<!--<UserControl.DataContext>
<local2:MemberListViewModel />
</UserControl.DataContext>-->
<Grid VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0"
Source="{Binding DiscFileImage}" RenderOptions.BitmapScalingMode="HighQuality" Height="15"
Margin="-2,5,5,5" Stretch="Uniform" RenderTransformOrigin=".5,.5" />
<TextBlock Grid.Column="1" Width="Auto" Foreground="White" TextAlignment="Left"
VerticalAlignment="Center" FontSize="6" x:Name="FileText" Margin="5,5,5,5"
Height="Auto" ToolTip="Click to Play" Text="{Binding ThisDoesntWorkYet}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.4" Storyboard.TargetProperty="FontSize" To="16" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
SO жалуется в основном код - детали нужно
Это будет работать. В зависимости от того, что вам нужно, вам также придется искать DependencyProperties. Они могут пригодиться – user853710
"элемент данных, который будет присутствовать в datacontext пользовательского элемента управления" – cablehead
", который будет присутствовать в datacontext пользовательского элемента управления. Есть два разных DataContexts - один для TorrentControl (где MListItem), а другой для элемента MemberListItem - собственного ViewModel. Должен ли я попытаться поместить DP в TorrentControlViewModel и использовать эту ViewModel для виртуальной машины MemberList? – cablehead