我有带有ItemTemplate的ListBox,其中包含一个ToggleButton:
<ListBox x:Name="lbInvoice" ItemsSource="{Binding ocItemsinInvoice}">
<ListBox.ItemTemplate>
<DataTemplate>
<ToggleButton x:Name="btnInvoiceItem">
<StackPanel Orientation="Horizontal" Width="375">
<TextBlock Text="{Binding Item.ItemName}" Width="200"/>
<TextBlock Text="{Binding SalePrice}" Width="60"/>
<TextBlock Text="{Binding Quantity}" Width="40"/>
<TextBlock Text="{Binding Total}" FontWeight="Bold" TextAlignment="Center" Width="70"/>
</StackPanel>
</ToggleButton>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
另外,我有弹出窗口,当我检查ToggleButton时,我希望这个弹出窗口打开,这是我的弹出代码:
<Popup x:Name="popup" PopupAnimation="Fade" AllowsTransparency="True" PlacementTarget="{Binding ElementName=btnInvoiceItem}" StaysOpen="False">
<Grid>
<TextBlock Text="pla pla pla"></TextBlock>
</Grid>
</Popup>
我将btnInvoiceItem设置为Popup的ElementName,但弹出窗口不会出现在ToggleButton旁边:(
我想念的是什么?
提前致谢。
答案 0 :(得分:2)
btnInvoiceItem
仅存在于与您的集合中的项目对应的ListBoxItem
的上下文中。因此,最简单的方法就是将Popup放在与按钮相同的DataTemplate中。
<DataTemplate>
<StackPanel>
<ToggleButton x:Name="btnInvoiceItem">
<StackPanel Orientation="Horizontal" Width="375">
<TextBlock Text="{Binding Item.ItemName}" Width="200"/>
<TextBlock Text="{Binding SalePrice}" Width="60"/>
<TextBlock Text="{Binding Quantity}" Width="40"/>
<TextBlock Text="{Binding Total}" FontWeight="Bold" TextAlignment="Center" Width="70"/>
</StackPanel>
</ToggleButton>
<Popup PopupAnimation="Fade" AllowsTransparency="True" StaysOpen="False" IsOpen="{Binding ElementName=btnInvoiceItem, Path=IsChecked, Mode=TwoWay}">
<Grid>
<TextBlock Text="pla pla pla"></TextBlock>
</Grid>
</Popup>
</StackPanel>
</DataTemplate>
答案 1 :(得分:0)
我认为你想做这样的事情:
<Popup IsOpen={Binding IsChecked, ElementName=btnInvoiceItem} x:Name="popup" PopupAnimation="Fade" AllowsTransparency="True" PlacementTarget="{Binding ElementName=btnInvoiceItem}" StaysOpen="False">
<Grid>
<TextBlock Text="pla pla pla"></TextBlock>
</Grid>
</Popup>