背景:
我有一个使用数据网格来展示数据的项目,数据网格有一个行详细列,其中包含一个用户控件。该用户控件有一些文本框用于用户输入和显示一些信息。
问题: 我想在点击按钮时弹出用户控件,并且弹出的用户控件具有与数据网格行详细列中的用户控件相同的上下文。这样做的意图是为了使用户易于与用户控件交互,因为行详细单元格的空间有限。
用户控件已经实现,并且可以在行详细单元格中正常工作。然而,我不知道如何弹出它而不改变它的上下文,比如数据源、在文本框中显示的消息等等。是否有人能给我一些建议? 顺便说一下,我使用MVVM模式。
编辑: 以下是行详细模板:
以下是用户控件(在上述代码中为MyUserControl)的内容:
问题: 我想在点击按钮时弹出用户控件,并且弹出的用户控件具有与数据网格行详细列中的用户控件相同的上下文。这样做的意图是为了使用户易于与用户控件交互,因为行详细单元格的空间有限。
用户控件已经实现,并且可以在行详细单元格中正常工作。然而,我不知道如何弹出它而不改变它的上下文,比如数据源、在文本框中显示的消息等等。是否有人能给我一些建议? 顺便说一下,我使用MVVM模式。
编辑: 以下是行详细模板:
<DataTemplate x:Key="RowDetailTemplate">
<Grid x:Name="RowDetailGrid" HorizontalAlignment="Left" Width="850" Height="355" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<my:MyUserControl x:Name="myUserControl" />
<Button Grid.Row="1" Width="60" Height="25" Content="Pop Up"
Command="{Binding Path=PopupCommand}"/>
.....
</Grid>
</DataTemplate>
以下是用户控件(在上述代码中为MyUserControl)的内容:
<UserControl x:Class="MyProject"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="600">
<Grid>
<ScrollViewer Margin="0" HorizontalScrollBarVisibility="Disabled" >
<StackPanel>
<ItemsControl Grid.Row="0" ItemsSource="{Binding Output, Mode=OneWay}" FontSize="12">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding Path=.}" Foreground="White" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<DockPanel Grid.Row="1" LastChildFill="True">
<TextBox Text="{Binding Input, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
TextWrapping="Wrap"
BorderBrush="{x:Null}" SelectionBrush="{x:Null}"
BorderThickness="0" Width="Auto">
<TextBox.InputBindings>
<KeyBinding Command="{Binding Path=TextBoxEnter}" Key="Enter" />
</TextBox.InputBindings>
</TextBox>
</DockPanel>
</StackPanel>
</ScrollViewer>
</Grid>