我制作了一个Toggle,它使用内部ListBox
展开了一个弹出窗口。看起来像这样:
<ToggleButton Name="Toggle" Height="20" Width="150" >
<StackPanel>
<TextBlock Text="TestListPopup"/>
<Popup Height="200" Width="150"
IsOpen="{Binding ElementName=Toggle, Path=IsChecked}"
PlacementTarget="{Binding ElementName=Toggle}"
HorizontalAlignment="Left"
VerticalAlignment="Bottom">
<ListBox SelectionMode="Multiple" SelectionChanged="TypeSelectionChanged" >
<ListBoxItem Content="Test1"/>
<ListBoxItem Content="Test2"/>
<ListBoxItem Content="Test3"/>
</ListBox>
</Popup>
</StackPanel>
</ToggleButton>
它工作正常,但是我想在这里的xceed FilterRow
的{{1}}中使用它:
DataGrid
在这里,弹出窗口将不会绑定到切换按钮。按下切换按钮不会执行任何操作。
我将其范围缩小为绑定被破坏,因为如果您设置IsOpen =“ True”,则它是开放的(并且不坚持PlacementTarget),但是又是;它在DataGrid外部完美运行。.
为什么将功能完善的控件放入<xcdg:DataGridControl x:Name="dataGrid"
ItemsSource="{Binding Source={StaticResource DataSource}}">
<xcdg:DataGridControl.View>
<xcdg:TableflowView>
<xcdg:TableflowView.FixedHeaders>
<DataTemplate>
<xcdg:ColumnManagerRow/>
</DataTemplate>
<DataTemplate>
<xcdg:FilterRow>
<xcdg:FilterCell FieldName="Name" IsEnabled="True"/>
<xcdg:FilterCell FieldName="Type" IsEnabled="True">
<!-- TestListPopup control here -->
</xcdg:FilterCell>
</xcdg:FilterRow>
</DataTemplate>
</xcdg:TableflowView.FixedHeaders>
</xcdg:TableflowView>
</xcdg:DataGridControl.View>
<xcdg:DataGridControl.Columns>
<xcdg:Column FieldName="Name" Title="Name" />
<xcdg:Column FieldName="Type" Title="Type" Width="160"/>
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
后会中断?
感谢您的帮助! :)
答案 0 :(得分:1)
为什么将功能完善的控件放入
class Button extends React.Component { handleClick = () => { console.log("from buttom"); if (this.props.hasOwnProperty('onClick')){ this.props.onClick(); }
后会中断?
因为FilterRow
和ToggleButton
不属于同一namescope。
您可以尝试使用FilterCell
进行绑定:
x:Reference
另一种选择是将IsOpen="{Binding Path=IsChecked, Source={x:Reference Toggle}}"
的{{1}}属性绑定到视图模型的IsChecked
属性,还要绑定{{ 1}}到相同的源属性。确保视图模型实现了ToggleButton
接口,并在设置source属性时引发更改通知。