Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
C# 如何将辅助控件MaxWidth属性设置为与其他容器中的另一个相同_C#_Wpf - Fatal编程技术网

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>