0

我希望能够在程序开始时隐藏屏幕的左侧和屏幕的右侧。

然后,当用户按下create new按钮时,屏幕左侧变为可用,以便他们可以创建新项目。然后当他们按下save它时,它只返回到中间数据网格。

然后我想在双击数据网格行时添加一个事件(数据被编程到代码中的数据网格中)屏幕的右侧变得可见然后当allocate按下按钮时右侧再次消失只是离开数据网格。

我对 WPF 相当陌生,所以不确定这是否可以完成。我正在为我的公司制作原型并且已经有一些使用单独的窗口时,我正在尝试在同一个窗口中进行操作。我发布了一张图片,但由于我是新用户,所以无法发布。

4

1 回答 1

1

要隐藏和显示控件,我建议使用扩展器(正如您的评论所说的那样)或网格并根据需要设置它们的可见性。如果您希望您的侧面板出现在数据网格上,那么显示它们只是改变它们的可见性的问题。如果不想遮挡 DataGrid,那么您将需要更改面板的可见性以及窗口的大小。

XAML:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow">
<Grid>
    <!-- DataGrid display -->
    <Grid>
        <StackPanel>
            <Button Content="Add New" Click="OnAddNewButtonClick" Width="100"/>
            <DataGrid ItemsSource="{Binding GridItems}" IsReadOnly="True" Name="dataGrid">
                <DataGrid.RowStyle>
                    <Style TargetType="{x:Type DataGridRow}">
                        <EventSetter Event="MouseDoubleClick" Handler="OnRowDoubleClick"/>
                    </Style>
                </DataGrid.RowStyle>
            </DataGrid>
        </StackPanel>
    </Grid>

    <!-- Left column pops up over DataGrid -->
    <Grid Name="LeftColumn" Visibility="Collapsed" Background="Red" Width="200" HorizontalAlignment="Left">
        <StackPanel  VerticalAlignment="Center">
            <Button Content="Hide Column" Click="OnLeftColumnButtonClick"/>
        </StackPanel>
    </Grid>

    <!-- Right Column expands screen size-->
    <Grid  Visibility="Collapsed" Name="RightColumn" Width="200" HorizontalAlignment="Right">
        <StackPanel Background="Green" >
            <TextBlock Text="Hidden Column"/>
            <Button Content="Hide Panel" Click="OnRightColumnButtonClick"/>
        </StackPanel>
    </Grid>
</Grid>
</Window

C# - 我知道你在 VB 中工作,但这对我来说更快。代码应该是不言自明的,但如果您需要 VB 示例,请告诉我:

public partial class MainWindow : Window
{
    public ObservableCollection<Person> GridItems { get; set; }
    private const double CollapsedWidth =  500;
    private const double ExpandedWidth = 700;

    public MainWindow()
    {
        DataContext = this;
        GridItems = new ObservableCollection<Person>();
        GridItems.Add(new Person { Name = "Foo", Age = 1 });
        GridItems.Add(new Person { Name = "Bar", Age = 2 });
        InitializeComponent();
        Width = CollapsedWidth;

    }

    private void OnAddNewButtonClick(object sender, RoutedEventArgs e)
    {
        LeftColumn.Visibility = Visibility.Visible;
    }

    private void OnLeftColumnButtonClick(object sender, RoutedEventArgs e)
    {
        LeftColumn.Visibility = Visibility.Collapsed;
    }

    private void OnRowDoubleClick(object sender, MouseButtonEventArgs e)
    {
        Width = ExpandedWidth;
        RightColumn.Visibility = Visibility.Visible;
    }

    private void OnRightColumnButtonClick(object sender, RoutedEventArgs e)
    {
        RightColumn.Visibility = Visibility.Collapsed;
        Width = CollapsedWidth;
    }
}
于 2012-06-24T04:01:28.923 回答