我是WPF的新手,我正在创建一个控件.此控件包含DataGrid和一些其他WPF控件.
我创建了我的控件如下:
<UserControl x:Class="MyControls.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="329" d:DesignWidth="535" >
<Grid>
<DataGrid Margin="6,25,6,35" Name="dataGrid" SelectionUnit="CellOrRowHeader" x:FieldModifier="public" HeadersVisibility="All"/>
<OtherControl HorizontalAlignment="Left" x:Name="otherControl" Height="34" VerticalAlignment="Bottom" Width="523" x:FieldModifier="private"/>
<Label Content="caption" Height="24" HorizontalAlignment="Left" Name="captionLabel" VerticalAlignment="Top" Foreground="#FF2626D1" x:FieldModifier="private"/>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
所以,到目前为止一切顺利,然后我创建了一个容器UserControl,其中包含我之前创建的控件:
<UserControl x:Class="MyContainers.MyContainer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" xmlns:my="clr-namespace:MyControls">
<Grid>
<my:MyControl>
</my:MyControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我不能做的是以下内容:
<my:MyControl>
<my:MyControl.dataGrid>
</my:MyControl.dataGrid>
</my:MyControl>
Run Code Online (Sandbox Code Playgroud)
我以前设置的DataGrid的财产FieldModifier作为public以访问它的另一个XAML,但它提出了从Visual Studio的错误.
我需要"公开"我的dataGrid,以便能够添加列及其样式.
我希望能够做到这样的事情:
<my:MyControl.dataGrid.Columns >
<DataGridTextColumn />
<DataGridTextColumn />
...
<DataGridTextColumn />
</my:MyControl.dataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)
那么,还不足以将datagrid的属性设置FieldModifier为public?
我还需要做点什么吗?我怎样才能做到这一点?这甚至可能吗? …
我在C#中使用DataSet和DataTables.
我的第一个问题是如何将DataRow []对象转换为DataTable,我用这个链接解决了这个问题:
那么,我做的是以下内容:
// Gets the rows according to the relation
DataRow[] rows = someDataRow.GetChildRows("the_table_relation");
DataTable newDataTable = rows.CopyToDataTable<DataRow>();
Run Code Online (Sandbox Code Playgroud)
我使用的所有数据都在一个DataSet中,因此,我的问题是我的对象newDataTable不再包含对我的DataSet的引用(即newDataTable.DataSet等于null).
有没有办法进行转换而不会丢失对我的DataSet的引用?
希望可以有人帮帮我.
提前致谢
我正在使用DataGrids,但由于列数根据必须显示的信息而有所不同,因此我在努力绑定数据。
因此,我试图做的是创建一个对象,该对象包含我有时需要的所有列和行,并将该对象绑定到ItemsSource属性。由于我在WindowsForms中使用过DataGridViews,因此我想到了以下内容:
DataTable myTable = new DataTable();
DataColumn col01 = new DataColumn("col 01");
myTable.Columns.Add(col01);
DataColumn col02 = new DataColumn("col 02");
myTable.Columns.Add(col02);
DataRow row = myTable.NewRow();
row[0] = "data01";
row[1] = "data02";
myTable.Rows.Add(row);
row = myTable.NewRow();
row[0] = "data01";
row[1] = "data02";
myTable.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)
但是我无法找到一种在WPF中执行相同操作的方法,因为例如,我需要一些列作为DataGridComboBoxColumns。
实际上,我已经在该站点上阅读了很多有关它的文章,但是没有一个对我有帮助。我真的迷路了。
有人可以帮我吗?我只需要能够创建一个表,该表可能包含DataGridTextColumns或DataGridComboBoxColumns等,以便将此最终对象绑定到DataGrid的ItemsSource属性。
希望可以有人帮帮我。
我正在开发一个需要使用的WinForms项目Linq-To-Sql.我已经能够使用该SqlMetal工具创建我的DataContext ,并进行一些查询.但是现在我遇到了一个我无法解决的问题.
我想做一个LEFT OUTER JOIN如下:
MyDatabase db = new MyDatabase(...);
var query = from p in db.ParentTable
join t in db.ChildTable on new {A = p.child_ID, B = p.OtherID}
equals new {A = t.ID, B = t.OtherID} into j1
from c in j1.DefaultIfEmpty()
select new
{
...
};
Run Code Online (Sandbox Code Playgroud)
当我编写此查询时,在编译时会在join单词中引发错误:
join子句中某个表达式的类型不正确.调用'GroupJoin'时类型推断失败
我知道这个错误是由之间的比较造成p.child_ID而且t.ID因为p.child_ID是int?和t.ID是int.但是,我该如何解决这个问题呢?如何在LEFT OUTER JOIN没有此错误的情况下执行?
p.child_ID是int?因为这列被标记为 …
c# ×3
wpf ×2
data-binding ×1
datagrid ×1
datarow ×1
dataset ×1
datatable ×1
linq ×1
linq-to-sql ×1
wpf-controls ×1
xaml ×1