[UWP]こんにちは皆、私はusercontrolで苦労しています。私は自分のフィールドコンテナ(groupbox)を作成して、別のStackPanelを投稿したところで、ユーザーコントロールコンテンツコントロールが塗りつぶされません
StackPanelを挿入すると、空のスペースを効果的に表示することができません。私は様々なオプションでstrecthを設定しようとしましたが、何もしませんでした。
これは私のユーザーコントロールのコードです:
<UserControl Name="groupBoxUC"
x:Class="AgendaUWP.Common.CustomControls.GroupBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AgendaUWP.Common.CustomControls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:interop="using:Windows.UI.Xaml.Interop"
mc:Ignorable="d"
d:DesignHeight="200"
d:DesignWidth="300">
<StackPanel x:Name="myStackPanel" BorderThickness="1" BorderBrush="Gray" Orientation="Vertical">
<StackPanel Margin="10 0 0 0" HorizontalAlignment="Left" >
<Border Background="{StaticResource secondaryColor}" Height="5" Width="{Binding ActualWidth, ElementName=HeaderText}"/>
<TextBlock x:Name="HeaderText" FontSize="18" FontWeight="ExtraLight" Text="{x:Bind Header,Mode=TwoWay}"/>
</StackPanel>
<ContentControl Padding="10 20 10 20" Content="{Binding InnerContent,ElementName=groupBoxUC}" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch" />
</StackPanel>
マイコード-Bheindユーザーコントロール:
[ContentProperty(Name = "InnerContent")]
public sealed partial class GroupBox : UserControl
{
internal static readonly DependencyProperty InnerContentProperty =
DependencyProperty.Register("InnerContent", typeof(object), typeof(GroupBox), new PropertyMetadata(null));
internal static readonly DependencyProperty HeaderProperty =
DependencyProperty.Register("Header", typeof(string), typeof(GroupBox), new PropertyMetadata(null));
public GroupBox()
{
this.InitializeComponent();
}
public object InnerContent
{
get { return (object)GetValue(InnerContentProperty); }
set { SetValue(InnerContentProperty, value); }
}
public string Header
{
get { return (string) GetValue(HeaderProperty); }
set { SetValue(HeaderProperty, value); }
}
}
これは私がそれを使用する方法です:
<CustomControls:GroupBox x:Name="grpCoordinate" Header="Coordinate" Margin="30,40,30,0" >
<StackPanel HorizontalAlignment="Left">
<TextBox Header="Longitudine:" Text="{x:Bind ViewModel.Cliente.Longitudine, Mode=TwoWay}" HorizontalAlignment="Stretch" />
<TextBox Header="Latitudine:" Text="{x:Bind ViewModel.Cliente.Latitudine, Mode=TwoWay}" HorizontalAlignment="Stretch" />
</StackPanel>
</CustomControls:GroupBox>
これは私の結果です:
EDIT:
は、恐れ入りますが、私は、コードや画像を貼り付けることが間違っていました。私は訂正: 私の使用法は以下の通りです:
<CustomControls:GroupBox x:Name="grpDatiAnagrafici" Header="Dati Anagrafici" VerticalAlignment="Top" Margin="30,0,30,0" Grid.Column="0" Grid.Row="0" >
<StackPanel x:Name="stkDatiAnagrafici" Orientation="Horizontal">
<StackPanel Padding="0 0 20 0">
<TextBox Header="Codice:" Text="{x:Bind ViewModel.Cliente.Codice, Mode=TwoWay}" IsReadOnly="True" IsEnabled="False"/>
<TextBox Header="Ragione Sociale:" Text="{x:Bind ViewModel.Cliente.RagioneSociale, Mode=TwoWay}" />
<TextBox Header="Nome:" Text="{x:Bind ViewModel.Cliente.Nome, Mode=TwoWay}" />
<TextBox Header="Cognome:" Text="{x:Bind ViewModel.Cliente.Cognome, Mode=TwoWay}" />
</StackPanel>
<StackPanel>
<TextBox Header="Indirizzo:" Text="{x:Bind ViewModel.Cliente.Indirizzo, Mode=TwoWay}" />
<TextBox Header="Comune:" Text="{x:Bind ViewModel.Cliente.Comune, Mode=TwoWay}" />
<TextBox Header="Cap:" Text="{x:Bind ViewModel.Cliente.Cap, Mode=TwoWay}" />
<TextBox Header="Provincia:" Text="{x:Bind ViewModel.Cliente.Provincia, Mode=TwoWay}" />
</StackPanel>
</StackPanel>
</CustomControls:GroupBox>
EDIT 2:明確化のため
おかげで、しかし、のStackPanelを維持する方法はありますか? 私はVisualStateManagerを管理しなければならないので、私は説明します:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="WindowStates">
<VisualState x:Name="WideState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="stkDatiAnagrafici.Orientation" Value="Horizontal" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NarrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="stkDatiAnagrafici.Orientation" Value="Vertical" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
私は、グリッドを使用している場合、私はまた、デバイス上で動作しているときに、第2の下部にグループを配置するGrid.Rowを指定する必要があるため。
回答をいただきありがとうございますが、質問を修正しましたが、例を貼り付けるのが間違っていました – Brux88
StackPanelを維持する方法がありますか? 私はVisualStateManagerを管理する必要があるので説明します。 私は私の願いを編集する – Brux88