相关疑难解决方法(0)

按类型查找WPF窗口中的所有控件

我正在寻找一种方法来查找Window类型的所有控件,

例如:查找全部TextBoxes,找到实现特定接口的所有控件等.

.net c# wpf

213
推荐指数
6
解决办法
18万
查看次数

WPF DataGrid:如何在单击单元格时停止自动滚动?

问题:
如果我DataGrid不完全可见(显示水平和垂直滚动条)并且我单击其中一个部分可见的单元格,则网格会自动滚动以将该单元格显示在视图中.我不希望这种情况发生.我试过玩RequestBringIntoView,像这样:

private void DataGrid_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

但这没有任何作用.

我试过的事情:

  • 我的细胞是定制的UserControls; 我试图把一个事件处理程序RequestBringIntoView上的所有UserControls使我的细胞,并试图处理事件,想,也许我是不是只是处理做得不够RequestBringIntoViewDataGrid本身.这没用.
  • 举办了DataGrid一个内部的ScrollViewer,而办理ScrollViewerRequestBringIntoView事件.这实际上是有效的,并且停止了自动滚动行为,但在我的情况下托管一个DataGrid内部ScrollViewer是完全不可取的,所以我需要提出一个不同的解决方案.

我不知道如何阻止这种行为,任何想法?

wpf datagrid scroll wpfdatagrid

26
推荐指数
5
解决办法
1万
查看次数

如何访问ItemsControl的子项?

如果我有一个派生的组件ItemsControl,我可以访问它的子集合,以便我可以循环它们来执行某些操作吗?我现在似乎找不到任何简单的方法.

c# wpf itemscontrol

25
推荐指数
3
解决办法
2万
查看次数

为什么在将Label.Content绑定到非字符串而不是字符串时会应用隐式TextBlock样式?

我正在查看这个问题,并发现绑定Label.Content到非字符串值将应用隐式TextBlock样式,但是绑定到字符串则不会.

以下是重现问题的示例代码:

<Window.Resources>
    <Style TargetType="Label">
        <Setter Property="FontSize" Value="26"/>
        <Setter Property="Margin" Value="10"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
    <Style TargetType="{x:Type TextBlock}">
        <Setter Property="FontSize" Value="26"/>
        <Setter Property="Margin" Value="10"/>
    </Style>
</Window.Resources>

<Grid>
    <StackPanel Orientation="Horizontal">
        <Label Content="{Binding SomeString}" Background="Red"/>
        <Label Content="{Binding SomeDecimal}" Background="Green"/>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

绑定值的代码是

SomeDecimal = 50;
SomeString = SomeDecimal.ToString();
Run Code Online (Sandbox Code Playgroud)

最终结果如下所示,Margin隐式TextBlock样式的属性应用于仅绑定到非字符串的Label:

在此输入图像描述

两个标签都呈现为

<Label>
    <Border>
        <ContentPresenter>
            <TextBlock />
        </ContentPresenter>
    </Border>
</Label>
Run Code Online (Sandbox Code Playgroud)

当我使用Snoop检查VisualTree时,我可以看到它对于两个元素看起来完全相同,除了第二个TextBlock从隐式样式应用Margin,而第一个没有.

在此输入图像描述

我已经使用Blend来提取默认标签模板的副本,但是没有看到任何奇怪的东西,当我将模板应用于我的两个标签时,同样的事情发生了.

<Label.Template>
    <ControlTemplate TargetType="{x:Type Label}">
        <Border BorderBrush="{TemplateBinding BorderBrush}" 
                BorderThickness="{TemplateBinding BorderThickness}" 
                Background="{TemplateBinding Background}" 
                Padding="{TemplateBinding …
Run Code Online (Sandbox Code Playgroud)

wpf label styles implicit-style

18
推荐指数
1
解决办法
1738
查看次数

检查WPF DataGrid中的可见行

我有一个WPF DataGrid,当屏幕上有太多行要查看时,它会得到一个垂直滚动条.我想知道的是,如果有一种方法可以知道用户滚动时顶部可见行是什么.

理想情况下,我希望能够连接事件以了解用户何时滚动和滚动,检查顶部可见行是什么以更新某些信息.

.net c# wpf datagrid

7
推荐指数
1
解决办法
1万
查看次数

无法使用WPF引用VS 2008中的代码中的控件

我不知道为什么但由于某种原因我无法在我的代码隐藏文件中引用我的tbText控件.这是XAML部分:

        <ComboBox.ItemTemplate>
            <DataTemplate>
                <ItemsControl x:Name="ic">

                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"></ColumnDefinition>
                            <ColumnDefinition Width="2*"></ColumnDefinition>
                        </Grid.ColumnDefinitions>

                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"></RowDefinition>
                        </Grid.RowDefinitions>
                    </Grid>                                                

                     **<TextBlock x:Name="tbText"  Grid.Column="0" Grid.Row="0"  Margin="10" />**
                     <Image Grid.Column="1" Margin="10" Grid.Row="0" Width="100" Height="100" Stretch="Fill">

                    </Image>                                                  


                </ItemsControl>
            </DataTemplate>
        </ComboBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

我不能参考"tbText"控件.

wpf visual-studio-2008 visual-studio

0
推荐指数
1
解决办法
132
查看次数