我有一个包含几个文本块的画布,我需要找到我在xaml中分配的顶部左角点.我怎样才能获得这两个属性?当我遍历画布上的框架元素时,我似乎无法找到列出的属性.
为什么collectionchanged事件不会在下面的代码中触发,但我可以看到我添加到ObservableCollection的新的InventoryBTO实例?
private ObservableCollection<InventoryBTO> _inventoryRecords;
public ObservableCollection<InventoryBTO> InventoryRecords
{
get { return _inventoryRecords; }
set { _inventoryRecords = value; }
}
private InventoryBTO _selectedRecord;
public InventoryBTO SelectedRecord
{
get { return _selectedRecord; }
set
{
if (_selectedRecord != value)
{
_selectedRecord = value;
OnPropertyChanged(new PropertyChangedEventArgs("SelectedRecord"));
}
}
}
public InventoryViewModel()
{
if (_inventoryRecords == null)
{
InventoryRecords = new ObservableCollection<InventoryBTO>();
this.InventoryRecords.CollectionChanged += new NotifyCollectionChangedEventHandler(InventoryRecords_CollectionChanged);
}
_inventoryRecords = InventoryListBTO.GetAllInventoryRecords();
}
void InventoryRecords_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud) 我有一个项目,客户端可以导入excel文件,csv或制表符分隔文件.此文件被加载到数据表中,我将其转换为SQLite数据库表.我真的很喜欢使用强类型对象的DataTable VS工作,所以是有办法轻松地转换为创建使用反射强类型类数据库中的表?踢球是导入应用程序将永远是不同的文件,(即不同的列),所以我真的不能硬编码任何强类型的对象,他们总是将不得不进行实时生成.
我正在尝试使用WPF和画布实现捕捉网格.我在想我的数学是关闭的,因为UIElement不会在后台捕捉到网格.下面是我用来创建网格的xaml以及我用来尝试将UIElement捕捉到最近网格线的方法.一旦触发鼠标按钮事件,就会触发使用的方法.如果这不是正确的WPF方法,有人能指出我正确的方向吗?
XAML
<Border x:Name="dragBorder"
BorderBrush="Black"
BorderThickness="1"
Margin="5"
CornerRadius="3">
<Canvas x:Name="dragCanvas"
AllowDragging="true"
AllowDragOutOfView="False"
Height="{Binding ElementName=dragBorder, Path=ActualHeight}"
Width="{Binding ElementName=dragBorder, Path=ActualWidth}">
<Canvas.Background>
<VisualBrush TileMode="Tile"
Viewport="0,0,16,16"
ViewportUnits="Absolute"
Viewbox="0,0,16,16"
ViewboxUnits="Absolute">
<VisualBrush.Visual>
<Ellipse Fill="#FF000000"
Width="2"
Height="2" />
</VisualBrush.Visual>
</VisualBrush>
</Canvas.Background>
</Canvas>
</Border>
Run Code Online (Sandbox Code Playgroud)
方法
private void SnapToGrid(UIElement element)
{
double xSnap = (Canvas.GetLeft(element) / gridWidth) * gridWidth;
double ySnap = (Canvas.GetTop(element) / gridWidth) * gridWidth;
Canvas.SetLeft(element, xSnap);
Canvas.SetTop(element, ySnap);
double tempX = Canvas.GetLeft(element);
double tempY = Canvas.GetTop(element);
}
Run Code Online (Sandbox Code Playgroud) 我仍然是C#的新手,我正在尝试决定构建新程序的最佳方法.这是我想做的事情,我想反馈我的想法.
我正在努力的是,如果可以让数据层和业务层中的类继承自我在模型层中定义的类型.通过这种方式,我可以根据需要使用我认为合适的任何新属性扩展我的业务层中的类型.我可能不会在Business Layer类中使用Model类型的每个属性,但这真的很重要吗?如果这还不够清楚,我可以试着拼凑一个例子.
如果我有以下怎么做,我将lambda表达式的结果从IEnumerable转换回Customer类型,而不必迭代它.
public class Customer : CustomerModel
{
public List<Customer> CustomerList {get;set;}
public Customer GetCustomerFromListById(long id)
{
return CustomerList.Select(c => c).Where(i => i.Id == id);
}
}
Run Code Online (Sandbox Code Playgroud)