我有这个WPF应用程序,我希望有从用户获取目录路径的功能.我想用一些文件夹浏览器对话框,但我不希望从实现它System.Windows.Forms,或者使用内部的一些巨大的脚本.是否已经实现了WPF中的某些路径获取对话框?
我已经阅读了类似问题的答案,但它充满了System.Windows.Forms ..
我在工具箱中找不到类似的东西,我从WPF开始,所以我可以使用一些帮助.
先感谢您 :]
我仍然在操纵细胞背景,所以我问了一个新问题.
用户"HB"写道我可以在AutoGeneratingColumn事件期间实际设置单元格样式- 根据值更改DataGrid单元格颜色.问题是我不知道该怎么做.
我想要的:根据每个单元格的值
设置不同的背景颜色.如果值是null我也希望它不可点击(我猜可以聚焦).
我有/我想做什么:
private void mydatagrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
foreach (Cell cell in e.Column)
{
if (cell.Value < 1)
{
cell.Background = Color.Black;
cell.isFocusable = false;
}
else
{
cell.Background = Color.Pink;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只是伪代码.在列自动生成期间是否可以这样做,如果是这样,我如何编辑我的代码以使其有效?
我读到了有关值转换器的内容,但我想知道它是否可以通过编程方式进行,而无需编写XAML.
请理解我还是C#/ WPF/DataGrid的初学者.
我用了我接受的答案.把它放入
<Window.Resources>
<local:ValueColorConverter x:Key="colorConverter"/>
<Style x:Key="DataGridCellStyle1" TargetType="{x:Type DataGridCell}">
<Setter Property="Padding" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True"> …Run Code Online (Sandbox Code Playgroud) 在我的表单中有两个DropDownList控件.
第1个启用,第2个禁用.
选择第一个下拉列表后,我正在使用javascript更改第二个下拉列表的选定值.
它的工作正常.但是当我试图获得第二个下拉列表的选定值时,它将返回第一个元素的值(即'select').
请参考我的代码
<asp:DropDownList ID="ddlStartTime1" runat="server" AutoPostBack="false"
Width="70" Enabled="false"></asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
注意:我使用javascript更改第二(禁用)下拉列表的选定值.
Javascript代码:
$(document).ready(function() {
$('#<%= ddlStartTime1.ClientID %>').change(function() {
$('#<%= ddlEndTime1.ClientID %>').val($('#<%= ddlStartTime1.ClientID%>').val());
})
});
Run Code Online (Sandbox Code Playgroud)
是否有任何替代方法来获取已禁用的DropDownList的值?
我有文本框,当我lostFocus被解雇时我正在更改其中的文本,但这也会激活textChanged我正在处理的事件,但是我不想在这种情况下解雇它,我怎么能在这里禁用它?
这个想法bool很好,但我有几个文本框,我对所有这些都使用相同的事件,所以它并不像我想要的那样完全正常工作.
现在它正在运作!:
private bool setFire = true;
private void mytextbox_LostFocus(object sender, RoutedEventArgs e)
{
if (this.IsLoaded)
{
System.Windows.Controls.TextBox textbox = sender as System.Windows.Controls.TextBox;
if(textbox.Text.ToString().Contains('.'))
{
textbox.Foreground = new SolidColorBrush(Colors.Gray);
textbox.Background = new SolidColorBrush(Colors.White);
setFire = false;
textbox.Text = "something else";
setFire = true;
}
}
}
private void mytextbox_TextChanged(object sender, TextChangedEventArgs e)
{
if ((this.IsLoaded) && setFire)
{
System.Windows.Controls.TextBox textbox = sender as System.Windows.Controls.TextBox;
if(textbox.Text.ToString().Contains('.'))
{
textbox.Foreground = new SolidColorBrush(Colors.White); …Run Code Online (Sandbox Code Playgroud) 我想在WPF数据网格中操作选择,但我有访问实际单元格的问题,并设置焦点并将它们标记为选中.
我想在不按Ctrl的情况下选择更多单元格(逐个)时在WPF Datagrid上进行自定义选择.我做得很好,但是当我想取消选择一个选定的单元格时,我遇到了问题 - 只需单击它即可.从列表中删除它不是问题.问题在于,当它被点击时它会聚焦并且被点亮,所有其他被选中的人都会关闭它们的暮色.如果我选择另一个未选中的单元格,则所有选定的单元格将再次正确显示.问题只出在取消选择中.
XAML:
<Window x:Class="SelectionTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="DataGridCell">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown"></EventSetter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Pink"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<DataGrid
Name="mydatagrid"
Width="Auto" Height="Auto"
HeadersVisibility="All"
AutoGenerateColumns="True" IsReadOnly="True"
SelectionMode="Extended" SelectionUnit="Cell"
CanUserAddRows="False" CanUserDeleteRows="False"
CanUserResizeColumns="False" CanUserResizeRows="False"
CanUserReorderColumns="False" CanUserSortColumns="False"
SelectedCellsChanged="mydatagrid_SelectedCellsChanged"
Padding="10" HorizontalAlignment="Center" VerticalAlignment="Top"
>
</DataGrid>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我已经在datagrid中填充了我制作的一些随机示例类对象的列表.
C#:
private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DataGridCell cell = sender as DataGridCell;
DataGridCellInfo cellInfo = new …Run Code Online (Sandbox Code Playgroud) 我有一段时间,我想通过它并在每个日期执行相同的代码.
开始和结束是DateTime格式,至少相差一个月
while ( !(begin.Equals(end)) )
{
...some code here...
begin = begin.AddDays(1);
}
Run Code Online (Sandbox Code Playgroud)
我不确定当Day值到达确切月份的结尾时(确切的年份)它是否会自动升级Month值 - 例如2月并不总是相同的天数所以...
是否有更好/更短/更好的方式将日期增加一天?比如这样的东西:begin.Day++; 还是这个:begin++;?
我不习惯C#,但很抱歉问这个蹩脚的问题,并提前感谢您的回答.
我创建了一个Windows窗体应用程序:
我正在使用EntityFramework 4.1与Code First Approach和SQL Compact 4.0数据库.
我在用于连接数据库的类库项目的app.config文件中创建了一个连接字符串.问题是连接字符串显然对数据库创建没有影响.我的意思是一切都与程序一起正常工作,但即使我指定了数据库的位置,这也没有任何效果!
我在正确的app.config中写作吗?我是否需要以特定方式初始化我的DbContext类?(今天我没有在构造函数中传递任何连接字符串)
DbContext类:
public class MyDB : DbContext
{
public DbSet<ContactPerson> ContactPersons { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Quotation> Quotations { get; set; }
public MyDB()
: base("MyDatabase")
{
}
}
Run Code Online (Sandbox Code Playgroud)
App.config连接字符串:
<add name="MyDatabase" connectionString="Data Source=MyDB.sdf"
providerName="System.Data.SqlServerCE.4.0">
Run Code Online (Sandbox Code Playgroud) connection-string sql-server-ce ef-code-first entity-framework-4.1
我对WPF和C#都很陌生,所以不要责怪我这可能是个愚蠢的问题.
我的WPF应用程序有两个日期选择器.我希望在更改时将DateTime从它们中取出,并将其用作应用程序中其他一些内容的变量.所以我为他们每个人都有这样的东西(方法是由VS自动生成的):
private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
date1 = datePicker1.SelectedDate;
}
Run Code Online (Sandbox Code Playgroud)
但问题是,datepicker中的日期是格式DateTime?不是DateTime,我真的不知道那个问号是什么意思,为什么它存在.我尝试了一些研究,但没有找到任何可以帮助我的东西.如果你看到一些更好的方式从该datepicker获取日期,你也可以帮助我.我只是需要它在我的xaml.cs代码中而不是在xaml中我并没有真正使用绑定因为我不确定它是否适用于我在这种情况下的需要.
谢谢你的回答.
编辑:我想添加它向我显示此错误的信息:
无法隐式转换类型'System.DateTime?' 到'System.DateTime'.存在显式转换(您是否错过了演员?)
我有一个WPF数据网格,我想获取网格中的所有选定单元格,我可以通过循环遍历所有项目来完成它,所以有没有内置的方法来做到这一点?
我在DataGrid中设置了两个属性:
SelectionMode="Extended" // for multiple selection
SelectionUnit="Cell" //row should not be selected but cell should be
Run Code Online (Sandbox Code Playgroud)
谢谢.
c# ×8
wpf ×6
datagrid ×3
datetime ×2
selection ×2
.net ×1
asp.net ×1
background ×1
cell ×1
coding-style ×1
date ×1
days ×1
lostfocus ×1
textbox ×1
textchanged ×1