小编Adi*_*ter的帖子

使用TemplateColumns将WPF DataGrid绑定到DataTable

我已经尝试了一切,无处可去,所以我希望有人可以给我一点时间.我根本无法获得绑定来成功地拉取数据网格中的数据.

我有一个DataTable,其中包含多个MyDataType列

public class MyData
{
    string nameData {get;set;}
    bool showData {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

MyDataType有2个属性(一个字符串,一个布尔值)我创建了一个测试DataTable

DataTable GetDummyData()
{
    DataTable dt = new DataTable("Foo");
    dt.Columns.Add(new DataColumn("AnotherColumn", typeof(MyData)));
    dt.Rows.Add(new MyData("Row1C1", true));
    dt.Rows.Add(new MyData("Row2C1", false));
    dt.AcceptChanges();
    return dt;
}
Run Code Online (Sandbox Code Playgroud)

我有一个WPF DataGrid,我想展示我的DataTable.但我想做的就是改变每个单元格的呈现方式,以便每个单元格显示[TextBlock] [Button],并将值绑定到MyData对象,这就是我遇到麻烦的地方.

我的XAML看起来像这样

<Window.Resources>
    <ResourceDictionary>
        <DataTemplate x:Key="MyDataTemplate" DataType="MyData">
            <StackPanel Orientation="Horizontal" >
                <Button Background="Green" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,0,0,0" Content="{Binding Path=nameData}"></Button>
                <TextBlock Background="Green" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,0,0,0" Text="{Binding Path=nameData}"></TextBlock>
            </StackPanel>
        </DataTemplate>
    </ResourceDictionary>
</Window.Resources>
<Grid>
    <dg:DataGrid Grid.Row="1" ItemsSource="{Binding}" AutoGenerateColumns="True"
                 x:Name="dataGrid1" SelectionMode="Single" CanUserAddRows="False"
                 CanUserSortColumns="true" CanUserDeleteRows="False" AlternatingRowBackground="AliceBlue"
                 AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

现在我加载的所有内容都是尝试将DataTable绑定到WPF …

data-binding wpf datatable binding datagrid

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

将异步调用转为同步

将异步调用转换为同步是否有任何良好的实践(模式)?
我有一个第三方库,其方法都是异步的,以获得任何方法的结果,你必须听一个事件,这将带来一些上下文.基本上它看起来像:

service.BeginSomething(...);
service.OnBeginSomethingCompleted += ;
Run Code Online (Sandbox Code Playgroud)

我需要的是在BeginSomething完成后执行一些代码(因此在触发OnBeginSomethingCompleted之后).在事件中处理响应非常不方便.

我能想到的唯一方法是运行Thread.Sleep循环并等待表单上的某个字段更新,但它看起来不是非常优雅的sollution.

我正在使用.net 4.0.

.net c# design-patterns asynchronous .net-4.0

8
推荐指数
1
解决办法
6910
查看次数

获取datagrid行

如何获取DataGrid中的行列表?不是绑定的项目,而是 DataGridRows列表.

我需要控制这些行的可见性,并且只能将其控制为a DataGridRow而不是数据对象.

谢谢!

wpf datagrid visibility datagridrowheader

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

虚拟属性和延迟加载

根据定义,虚拟属性或方法是要被覆盖的子类可见的方法.但是,例如NHibernate使用虚拟属性来确保延迟加载.

我的问题不是关于NHibernate,而是如何使用虚拟属性来实现延迟加载?是否有任何关于我不知道的虚拟属性的隐藏行为?

c# virtual lazy-loading properties

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

T - > IHandler <T>之间的映射

我有以下界面

public interface IHandler<T>
{
    void Handle(T myObject);
}
Run Code Online (Sandbox Code Playgroud)

我希望有一个HandlersManager类,它包含对象类型与相应处理程序之间的映射,但我不确定我应该如何定义保存此映射的对象.

例如,我想要的是:

typeof(string)  --> instance of IHandler<string>
typeof(MyClass) --> instance of IHandler<MyClass>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我得到的最好的事情是Dictionary<Type, object>为映射定义,但在这种情况下,我必须在IHandler<T>每次获取它时将值转换为值.

有没有更好的解决方案或我完全错过的东西?

.net c# generics dictionary

7
推荐指数
2
解决办法
1244
查看次数

使用repo命令回滚?

使用repo命令时如何进行回滚?

我在一些文件中做了一些更改,现在我想回滚到使用repo sync命令时下载的源代码.

我没有做出改变.

git android repository

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

将命令附加到ListView的ScrollViewer.ScrollChanged

WPF ListView类可以设置为在没有外部的情况下自动处理滚动ScrollViewer,并且可以通过编写XAML来为控件的内部滚动条注册事件处理程序:

<ListView ScrollViewer.ScrollChanged="ScrollChanged"  />
Run Code Online (Sandbox Code Playgroud)

如何将它附加到MVVM light命令?我尝试了以下,但它不起作用:

<ListView>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="ScrollViewer.ScrollChangedEvent">
            <cmd:EventToCommand Command="{Binding ScrollCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ListView>
Run Code Online (Sandbox Code Playgroud)

注意:ScrollCommand- RelayCommand来自我的viewmodel.

wpf eventtrigger mvvm mvvm-light eventtocommand

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

使用c#在excel中选择工作表

在.NET 3.5中使用C#与Visual Studio 2008,我试图在打开的工作簿中设置焦点(或激活)特定的工作表:

以下是一些属性:

public Excel.Application xlApp {get;set;}
public Excel.Workbook xlWorkBook { get; set; }
public Excel.Worksheet xlWorkSheet { get; set; }
public Excel.Range range { get; set; }        
Run Code Online (Sandbox Code Playgroud)

以下是我尝试选择特定工作表的方法:

(xlWorkSheet)Application.ActiveWorkbook.Sheets[FormControls.WorksheetFocus]).Select(Type.Missing);
Run Code Online (Sandbox Code Playgroud)

我也尝试过这种方式:

((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets[1]).Select();
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何使用C#在工作簿中选择特定工作表?


解释定义的位置:

namespace EmailSalesVolumeSolution
{
    class WorkBook
    {
        public string MasterFileName { get; set; }
        public string[] DistinctEmails { get; set; }
        public Excel.Application xlApp {get;set;}
        public Excel.Workbook xlWorkBook { get; set; }
        public Excel.Worksheet xlWorkSheet { get; set; }
        public Excel.Range range { get; set; …
Run Code Online (Sandbox Code Playgroud)

.net c# excel excel-2007 office-interop

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

如何在BeforeSendRequest中取消请求

使用IClientMessageInspector界面时,我可以从BeforeSendRequest方法中取消请求吗?null无论如何,返回发送请求.

 public object BeforeSendRequest(ref Message request, IClientChannel channel)
 {
    if(Condition)
    {
        return null; //I want cancel my send
    }
    else
    {
       return request;
    }
  }
Run Code Online (Sandbox Code Playgroud)

.net wcf iclientmessageinspector

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

c #async运行单线程?

我正在阅读http://msdn.microsoft.com/en-US/library/vstudio/hh191443.aspx.示例代码:

async Task<int> AccessTheWebAsync()
{ 
    // You need to add a reference to System.Net.Http to declare client.
    HttpClient client = new HttpClient();

    // GetStringAsync returns a Task<string>. That means that when you await the 
    // task you'll get a string (urlContents).
    Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");

    // You can do work here that doesn't rely on the string from GetStringAsync.
    DoIndependentWork();

    // The await operator suspends AccessTheWebAsync. 
    //  - AccessTheWebAsync can't continue until getStringTask is complete. 
    //  - Meanwhile, …
Run Code Online (Sandbox Code Playgroud)

c# async-await c#-5.0

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