Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 如何使两个控件的高度完全相同_Silverlight - Fatal编程技术网

Silverlight 如何使两个控件的高度完全相同

Silverlight 如何使两个控件的高度完全相同,silverlight,Silverlight,希望两个控件占用所有可用空间,大小完全相同。另外,将一个控件的可见性更改为“折叠”时,我希望另一个控件占用空间。怎么可能呢 下面的xaml将确保控件具有相同的高度并填充空间。但是,无论控件的可见性如何,这两行都占用了空间 <Grid > <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition>

希望两个控件占用所有可用空间,大小完全相同。另外,将一个控件的可见性更改为“折叠”时,我希望另一个控件占用空间。怎么可能呢

下面的xaml将确保控件具有相同的高度并填充空间。但是,无论控件的可见性如何,这两行都占用了空间

   <Grid >
        <Grid.RowDefinitions>
                <RowDefinition Height="*"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
            <TextBlock   Name="t1" Grid.Row="0"   Text="first"  />
            <TextBlock Name="t2" Grid.Row="1"  Text="second" />
        </Grid>


非常感谢您提供的任何帮助

我想不出一种方法可以使用任何内置面板控件来完成您想要的操作

一个简单的方法是在每次更新可见性时更新行定义的数量:

int numberOfRows = grid.Children.Count(item => item.Visibility == Visibility.Visible);
grid.RowDefinitions.Clear();
for (int i=0 ; i<numberOfRows ; i++)
    grid.RowDefinitions.Add(new RowDefinition());
int numberOfRows=grid.Children.Count(item=>item.Visibility==Visibility.Visible);
grid.RowDefinitions.Clear();

对于(int i=0;i我想不出一种方法来做你想做的事情,使用任何内置的面板控件

一个简单的方法是在每次更新可见性时更新行定义的数量:

int numberOfRows = grid.Children.Count(item => item.Visibility == Visibility.Visible);
grid.RowDefinitions.Clear();
for (int i=0 ; i<numberOfRows ; i++)
    grid.RowDefinitions.Add(new RowDefinition());
int numberOfRows=grid.Children.Count(item=>item.Visibility==Visibility.Visible);
grid.RowDefinitions.Clear();

对于(int i=0;i如果您有少量固定数量的控件,那么您也可以使用替代解决方案,即将行高绑定到控件可见性。 为此,我们可以如下修改您的示例:

<Grid>
    <Grid.Resources>
        <local:VisibilityToRowHeightConverter x:Key="visibilityToRowHeightConverter" />
    </Grid.Resources>
    <Grid.RowDefinitions>
        <RowDefinition Height="{Binding Visibility, ElementName=t1, Converter={StaticResource visibilityToRowHeightConverter}}" />
        <RowDefinition />
    </Grid.RowDefinitions>

    <TextBlock Name="t1" Text="first" />
    <TextBlock Name="t2" Grid.Row="1" Text="second" />
</Grid>

因此,每当
t1
折叠时,相应的
RowDefinition
将其值设置为0,并在再次显示
t1
时返回到一个星号。

如果此控件的固定数量很少,则也可以使用替代解决方案,即将行高度绑定到控件可见性。 为此,我们可以如下修改您的示例:

<Grid>
    <Grid.Resources>
        <local:VisibilityToRowHeightConverter x:Key="visibilityToRowHeightConverter" />
    </Grid.Resources>
    <Grid.RowDefinitions>
        <RowDefinition Height="{Binding Visibility, ElementName=t1, Converter={StaticResource visibilityToRowHeightConverter}}" />
        <RowDefinition />
    </Grid.RowDefinitions>

    <TextBlock Name="t1" Text="first" />
    <TextBlock Name="t2" Grid.Row="1" Text="second" />
</Grid>

因此,每当
t1
崩溃时,相应的
RowDefinition
将其值设置为0,并在再次显示
t1
时返回到一颗星。

Silverlight stock Panel很难使用。请考虑实现
StretchPanel
。 关于SL
StretchPanel
实现:
而且

Silverlight库存面板很难使用。考虑实现一个
StretchPanel
。 关于SL
StretchPanel
实现: 及