C# 如何将辅助控件MaxWidth属性设置为与其他容器中的另一个相同
我的表格中有一个C# 如何将辅助控件MaxWidth属性设置为与其他容器中的另一个相同,c#,wpf,C#,Wpf,我的表格中有一个StackPanel: <StackPanel x:Name="panelWeelyBibleReading" Grid.Row="2" Grid.Column="0" Margin="2"> <Label>Bible Reading for Week:</Label> <TextBox x:Name="textWeeklyBibleReading">PSALMS 60-68</TextBox> <
StackPanel
:
<StackPanel x:Name="panelWeelyBibleReading" Grid.Row="2" Grid.Column="0" Margin="2">
<Label>Bible Reading for Week:</Label>
<TextBox x:Name="textWeeklyBibleReading">PSALMS 60-68</TextBox>
</StackPanel>
<StackPanel Grid.Row="3" Grid.Column="0" Margin="2">
<Label>Opening Song:</Label>
<ComboBox x:Name="comboSongOpen" ItemsSource="{StaticResource SongTitles}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:SongTitleItem">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Number, StringFormat='000 - '}" />
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.MaxWidth>
<Binding Path="ActualWidth"
ElementName="textWeeklyBibleReading"/>
</ComboBox.MaxWidth>
</ComboBox>
</StackPanel>
圣经阅读周:
诗篇60-68
开场歌:
在表格下方的不同网格中,我有:
<StackPanel Grid.Row="3" Grid.Column="0" Margin="2">
<Label>Closing Song:</Label>
<ComboBox x:Name="comboSongEnd" ItemsSource="{StaticResource SongTitles}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:SongTitleItem">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Number, StringFormat='000 - '}" />
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.MaxWidth>
<Binding Path="ActualWidth"
ElementName="panelWeeklyBibleReading.textWeeklyBibleReading"/>
</ComboBox.MaxWidth>
</ComboBox>
</StackPanel>
闭幕曲:
最初,我尝试在第二个组合中对MaxWidth
使用相同的“textWeeklyBibleReading”
。但它不起作用。没有警告。就是不管用。因此,我考虑在前面的StackPanel
中应用一个名称,希望能将其用作某种访问点。但它仍然不起作用
所以我的问题是,我需要在第二个组合上设置MaxWidth,它位于不同的网格中,但使用在第一个网格组合上计算的值。我说得通吗
如果有帮助,我会显示完整的表单标记。您应该编辑为:
<ComboBox.MaxWidth>
<Binding Path="Width"
ElementName="textWeeklyBibleReading"/>
</ComboBox.MaxWidth>
<Binding Path=Width, ElementName=textWeeklyBibleReading/>
您应该设置
StackPanel
的MaxWidth
的。因此,我建议将组合框的Width
绑定到它的ItemTemplate
。原因ItemTemplate
具有Data/template
,然后最好将组合框的宽度
绑定到数据模板中的堆栈面板
,只使用textWeeklybileReading
而不是PanelWeeklybileReading.textWeeklybileReading
。尝试一下@tabby,这是建议的答案。哦,是的,我没有看到,谢谢。我会努力的。但它适用于第一个组合,使用实际宽度。为什么不是第二个呢?它不适用于这个xaml:
?Hhm。我不得不去掉你答案中的逗号。但它似乎不起作用。我的组合仍然会随着物品的挑选而改变大小。这非常有效。谢谢请在回答中说明为什么在堆栈面板上设置值比在组合框上设置值更好?
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:SongTitleItem">
<StackPanel Orientation="Horizontal" MaxWidth="{Binding Path=Width,
ElementName=textWeeklyBibleReading}">
<TextBlock Text="{Binding Number, StringFormat='000 - '}" />
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>