Xex*_*las 5 c# wpf xaml user-controls wpf-controls
首先,这是我使用 Xaml 的第一天,所以这个问题对你来说可能是虚拟的,但我完全迷路了。
我的技术是我有 MainWindow.xaml ,它分为三个区域(使用网格列),列宽度自动设置。
根据右列中的一些操作,中间列显示一个页面,假设 Page.xaml 存在于不同的命名空间中。
问题是我需要将此页面的宽度和高度设置为等于中间列的宽度和高度,因为它将适合该区域。
我对 xaml 和绑定技术的经验很少。
主窗口.Xaml
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
WindowState="Maximized"
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
Title="MainWindow" d:DesignWidth="1366" d:DesignHeight="768">
<Grid x:Name="MainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.2*" x:Name="LeftColoumn" />
<ColumnDefinition Width="3*" x:Name="CenterColoumn" />
<ColumnDefinition Width=".8*" x:Name="RightColoumn" />
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="2">
<StackPanel Orientation="Vertical" x:Name="RightStackPanel" Background="LightGray" >
<Border BorderBrush="{x:Null}" Height="50" >
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" FontWeight="SemiBold" FontStyle="Normal" Margin="3" FontSize="20" >Others</TextBlock>
</Border>
<Expander x:Name="Expander1" Header="Others" Margin="0,0,10,0">
<Button Margin="0,0,0,0" Width="{Binding ActualWidth, ElementName=RightStackPanel}" Background="White" Content="Add" Height="50" Click="Button_Click" ></Button>
</Expander>
</StackPanel>
</ScrollViewer>
<Frame Grid.Column="0" x:Name="LeftFrame" Background="LightGray" ></Frame>
<Frame Grid.Column="1" x:Name="CenterFrame" Background="DarkGray" ></Frame>
</Grid></Window>
Run Code Online (Sandbox Code Playgroud)
其他 Xaml 文件
<Page
x:Name="Page"
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"
Title="Any" d:DesignWidth="1364" d:DesignHeight="868"
>
<Grid>
<Frame Background="DarkGray" />
</Grid></Page>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs
private void Button_Click(object sender, RoutedEventArgs e)
{
Frame middleFrame=CenterColumn;
Otherxaml other=new Otherxaml();
middleFrame.Source = new Uri("OtherxamlPage.xaml", UriKind.RelativeOrAbsolute);
}
Run Code Online (Sandbox Code Playgroud)
与您的代码片段相关,您可以将其放置OtherxamlPage.xaml
在中央框架内部并设置该框架的属性,如下所示:
<Frame Grid.Column="1" x:Name="CenterFrame" VerticalAlignment="Stretch" VerticalContentAlignment="Center" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" Source="OtherxamlPage.xaml" Background="DarkGray" />
Run Code Online (Sandbox Code Playgroud)
OtherxamlPage.xaml
您可以在事件处理程序中动态设置 Source=" ",例如Button.Click
根据您的示例。
或者,考虑创建 WPF UserControl
(参见:https://msdn.microsoft.com/en-us/library/cc294992.aspx)而不是其他 XAML 窗口(或页面)并将其直接放入网格单元中。在这两种情况下,设置内容“Stretch”属性以便自动调整其大小,因此您不需要在代码中指定它。
希望这会有所帮助。
归档时间: |
|
查看次数: |
19869 次 |
最近记录: |