相关疑难解决方法(0)

如何从代码隐藏中访问控件模板的元素

我正在尝试访问内容控件的控件模板内的用户控件.特别:

  <ContentControl x:Name="MyList" >
        <ContentControl.Template>
            <ControlTemplate x:Name="MyControlTemplate">
                <Border RenderTransformOrigin="0,0" x:Name="border">
                    <UserControls:MyControl x:Name="MyControlName" Width="100" ViewModel="{Binding}" />
Run Code Online (Sandbox Code Playgroud)

我可以访问this.MyList,但它说明了找不到.MyControlName.在这种情况下如何从代码隐藏中访问MyControlName对象?

谢谢!

syntax wpf user-controls code-behind

44
推荐指数
2
解决办法
5万
查看次数

如何从DataGridTemplateColumn.CellTemplate访问按钮

我有以下.xaml for DataGrid,并希望在.cs代码中的某些条件下显示/隐藏按钮.xaml代码如下

<DataGridTemplateColumn Header="Action" Width="auto" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Button x:Name="btnConfirm" Content="Confirm" Click="ConfirmButton_Click"  Height="auto" Width="auto"  Opacity="100" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Left"/>
                <Button x:Name="btnDecline" Content="Decline" Click="btnDecline_Click" Height="auto" Width="auto"  Opacity="100" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Left" />
                <Button x:Name="btnCancel" Content="Cancel" Click="btnCancel_Click" Height="auto" Width="auto"  Opacity="100" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Left"/>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

和.cs代码是

foreach (sp_ProcessingJobsResult item in grdUnConfirmJobs.ItemsSource)
{
var row = grdUnConfirmJobs.ItemContainerGenerator.ContainerFromItem(item) as System.Windows.Controls.DataGridRow;
if (item.Status == "Cancellation Requested.")
    {
      //how find control    
    }
}
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf

6
推荐指数
1
解决办法
883
查看次数

FindVisualChild参考问题

我找到并修改了以下代码,以便使用iTextSharp类将我的dataGrid导出为pdf文档.

private void ExportToPdf(DataGrid grid)
    {
        PdfPTable table = new PdfPTable(grid.Columns.Count);
        using (Document doc = new Document(iTextSharp.text.PageSize.A4))
        {
            using (PdfWriter writer = PdfWriter.GetInstance(doc, new System.IO.FileStream("Test.pdf", FileMode.Create)))
            {
                doc.Open();
                for (int j = 0; j < grid.Columns.Count; j++)
                {
                    table.AddCell(new Phrase(grid.Columns[j].Header.ToString()));
                }
                table.HeaderRows = 1;
                IEnumerable itemsSource = grid.ItemsSource as IEnumerable;
                if (itemsSource != null)
                {
                    foreach (var item in itemsSource)
                    {
                        DataGridRow row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                        if (row != null)
                        {
                            DataGridCellsPresenter presenter = FindVisualChild<DataGridCellsPresenter>(row);
                            for (int i = …
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid

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

stackpanel中的背景颜色变化

我有按钮点击超链接按钮的堆栈面板我必须更改堆栈面板背景

              <HyperlinkButton Name="WhereToStayButton" Margin="0,0,0,0"  Grid.Row="5"  Click="WhereToStayButton_Click">
            <HyperlinkButton.Template>

                <ControlTemplate TargetType="HyperlinkButton">
                    <StackPanel Orientation="Horizontal"   Background="#EBEBEB"     x:Name="sp1">
                        <Image Source="/Assets/Menu/wheretostay.png"   Stretch="None"/>
                        <TextBlock Text="{Binding Path=LocalizedResources.menu_where_stay, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center" Margin="5,10" FontSize="26" Foreground="Black" FontFamily="{StaticResource CustomLucidaGrandStyle}"/>
                    </StackPanel>
                </ControlTemplate>
            </HyperlinkButton.Template>
        </HyperlinkButton>
Run Code Online (Sandbox Code Playgroud)

wpf windows-phone-7

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

将事件绑定到使用 WPF 中的数据模板创建的控件

在我的 WPF 项目中,我在代码隐藏中创建了一个自定义 ListView。在这个 ListView 中有一列包含一个按钮,由我的资源字典中的数据模板定义。

<DataTemplate x:Key="DataTemplate_EditButton">
  <Button Style="{DynamicResource Button_Image}" Width="25" ... />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

当我初始化 ListView 时,我使用以下代码创建列:

GridViewColumn buttonColumn = new GridViewColumn();
DataTemplate dt = Application.Current.TryFindResource("DataTemplate_EditButton") as DataTemplate;
buttonColumn.CellTemplate = dt;
...

gridView.Columns.Add(buttonColumn);
Run Code Online (Sandbox Code Playgroud)

现在我想将一个事件处理程序绑定到按钮的点击事件。我不能在模板中执行此操作,因为我需要为 Dictionary 创建一个隐藏类的代码,并且无论如何我都需要 ListView-UserControl 中的事件处理程序。当我使用数据模板创建列时,当然无法访问为每一行创建的按钮。

处理以所述方式创建的按钮的点击事件的最佳方法是什么?

提前致谢,
弗兰克

c# wpf datatemplate event-handling

2
推荐指数
1
解决办法
1741
查看次数