source

은색 빛에서 자식 요소의 너비를 부모 요소의 너비에 바인딩하는 방법

ittop 2023. 5. 17. 23:28
반응형

은색 빛에서 자식 요소의 너비를 부모 요소의 너비에 바인딩하는 방법

너비가 "1*"인 그리드가 있습니다.그래서 실제 너비는 런타임에 결정되었다고 생각합니다.이 그리드 안에 부모 그리드의 런타임 너비로 설정할 다른 그리드가 있습니다.바인딩을 통해 xaml에서 어떻게 해야 합니까?

이게 실제로 도움이 될 거예요

Width="{Binding ActualWidth, ElementName=parentElementName}"

너비를 부모 요소 또는 제공된 요소 이름에 바인딩합니다.

이것은 어디서나 작동할 수 있는 일반적인 솔루션입니다.상위 요소 이름을 쓸 필요가 없습니다.이것은 상위 항목을 식별하고 상위 항목의 너비를 취합니다.

Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualWidth}"

동일한 작업을 수행하는 가장 쉬운 방법은 다음과 같습니다.

HorizontalAlignment="Stretch"

그것은 당신이 요청한 것처럼 바인딩을 사용하지 않지만, 더 쉽습니다.

 Width="{Binding Width, RelativeSource={RelativeSource AncestorType={x:Type Parent}, Mode=FindAncestor}}"

두 컨트롤 모두 DataContext가 다른 경우.

코드비하인드에서 하는 거라면 저한테 맞는 말입니다.bindMe가 Me의 자식일 필요가 없다는 추가적인 장점이 있습니다.

public static void BindWidth(this FrameworkElement bindMe, FrameworkElement toMe)
{
  Binding b = new Binding();
  b.Mode = BindingMode.OneWay;
  b.Source = toMe.ActualWidth;
  bindMe.SetBinding(FrameworkElement.WidthProperty, b);
}

용도:

child.BindWidth(parent);

HorizontalAlignment(수평 정렬)는 Xamarin(사마린)의 버튼에 사용할 수 없습니다. 대신 Horizontal Options(수평 옵션)를 사용할 수 있습니다.

HorizontalOptions="Fill"

ListBox에서 HorizontalContentAlignment="Stretch" 사용:

<ListBox HorizontalContentAlignment="Stretch">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <Image HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="TestImage.png"/>
                <TextBlock HorizontalAlignment="Center" Text="Test Text"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

또는 템플릿 내부에 있는 경우 다음을 사용합니다.

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <Image Width="{TemplateBinding Width}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="TestImage.png"/>
                <TextBlock HorizontalAlignment="Center" Text="Test Text"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

언급URL : https://stackoverflow.com/questions/18864831/how-to-bind-width-of-child-element-to-width-of-parent-element-in-silverlight

반응형