我有奇怪的问题.
我使用的是Windows 7企业版sp1 64位.
我需要为我的项目获取程序文件和程序文件X86目录路径.这就是我所做的:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
Run Code Online (Sandbox Code Playgroud)
但这两行都返回程序文件X86文件夹.
我该如何解决?
我有一个基于项目的WPF和MVVM.我的项目基于一个包含内容控件的向导,该控件显示我的视图(用户控件)我想在完全加载视图后执行命令,我希望用户在执行命令后立即查看视图UI.
我试过用:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding StartProgressCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)
但是在我看到视图UI之前执行该命令并且它不是我正在寻找的.
有谁知道我应该如何实现它?
我的项目基于MVVM模式.
我已经构建了一个显示我的文件系统的树视图.每个文件夹都有一个用于选择当前文件夹的复选框 选择过程需要一些时间,因此在操作运行时,有一个禁用的按钮,在操作结束时我启用按钮.
我的问题是,当按钮被"禁用"时,我会立即看到它.但是,当按钮返回启用模式时,我必须执行一些操作(如鼠标单击)以查看启用的按钮.
如何确保在启用按钮后立即更新UI?
这些是我的按钮:
<Button Content="<- Back" Margin="5,0,5,0" Width="80" Height="25"
IsEnabled="{Binding CanMoveToPreviousPage, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding Path=NavigateBackCommand, IsAsync=True}" />
<Button Content="{Binding ButtonNextCaption}" Margin="5,0,5,0" Width="80" Height="25"
IsEnabled="{Binding CanMoveToNextPage, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding Path=NavigateNextCommand, IsAsync=True}" />
Run Code Online (Sandbox Code Playgroud)
在我的ViewModel中,我添加了以下代码:
public bool CanMoveToNextPage
{
get
{
return this.CurrentPage != null && this.CurrentPage.CanMoveNext;
}
set
{
if (CurrentPage != null)
{
this.CurrentPage.CanMoveNext = value;
OnPropertyChanged("CanMoveToNextPage");
}
}
}
public bool CanMoveToPreviousPage
{
get { return 0 < this.CurrentPageIndex && CurrentPage.CanMoveBack; }
set
{
if (CurrentPage != …Run Code Online (Sandbox Code Playgroud) 我看到很多与此问题相关的帖子,但我找不到解决方案
我有下一个WPF DataGrid:
<DataGrid Grid.Column="1"
Grid.Row="4"
AutoGenerateColumns="False"
ItemsSource="{Binding MapsGrid}"
SelectedItem="{Binding DataContext.CategoriesSelectedRow, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Mode=OneWayToSource}"
SelectionMode="Single"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Main Category"
Width="*">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
<Setter Property="FontSize"
Value="16" />
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding MainCategoriesColl}"
DisplayMemberPath="Category"
SelectedItem="{Binding MainCategorySelectedItem,UpdateSourceTrigger=LostFocus, Mode=OneWayToSource}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Sub Category"
Width="*">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
<Setter Property="FontSize"
Value="16" />
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding SubCategoriesColl}"
DisplayMemberPath="Category"
SelectedItem="{Binding SubCategorySelectedItem, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" /> …Run Code Online (Sandbox Code Playgroud) 我有与包含用户控件的 ContentControl 一起使用的向导项目。我通过主窗口中的 XAML 文件进行实例化:
<DataTemplate DataType="{x:Type ViewModel:OpeningViewModel}">
<view:OpeningView/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:SecondUCViewModel}">
<view:SecondUCView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
但是当我在 UC 之间导航时,UC 似乎不像“保持活动”那样工作,每次 UC 切换都会创建新实例。我怎样才能避免它?我想为每个 UC 只创建一个实例,并且只在这些实例之间导航而不创建新实例。
我知道如何编写单例,但我的项目基于 MVVM,而且我对 WPF 还很陌生,所以我不确定这样做的最佳方法是什么。
更新:
这里是 viewModel 的代码:
在 viewModel 我有:
私有 ObservableCollection _pages = null; 私人 NavigationBaseViewModel _currentPage;
#endregion
#region Properties
public int CurrentPageIndex
{
get
{
if (this.CurrentPage == null)
{
return 0;
}
return _pages.IndexOf(this.CurrentPage);
}
}
public NavigationBaseViewModel CurrentPage
{
get { return _currentPage; }
private set
{
if (value == _currentPage) …Run Code Online (Sandbox Code Playgroud) 我不确定我的问题标题是否代表我的问题,我会尽力解释:
我有一个网格单元DataTemplate :(该网格属于第三方公司,但对我的问题并不重要)
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding OpenLinkCommand}">
<Hyperlink.ToolTip>
<TextBlock Text="{Binding Data.MapLink}"/>
</Hyperlink.ToolTip>
<TextBlock Text="{Binding Data.MapLink}" TextDecorations="underline">
</Hyperlink>
</TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
我想让这个DataTemplate显示一些超链接("Data.MapLink"是包含链接值的对象),每次单击此链接将触发命令"OpenLinkCommand".
问题是"Data.MapLink"和"OpenLinkCommand"位于不同的dataContext中,然后我必须选择以下选项之一:
保留超链接dataContext作为它 - 命令不会工作,超链接将获得Data.MapLink值.
将超链接dataContext更改为命令datacontext - 该命令将起作用,但超链接名称将为空.
遗憾的是我没有选择将这些项放在同一个dataContext中,所以我必须找到一种方法告诉命令它dataContext是"X"并告诉hyperLink它dataContext是"Y".
我希望我的问题很清楚如何解决这个问题?
我正在尝试设置一个互斥锁,以便只允许在一个实例中运行我的应用程序.我写了下一个代码(如其他帖子中的建议)
public partial class App : Application
{
private static string appGuid = "c0a76b5a-12ab-45c5-b9d9-d693faa6e7b9";
protected override void OnStartup(StartupEventArgs e)
{
using (Mutex mutex = new Mutex(false, "Global\\" + appGuid))
{
if (!mutex.WaitOne(0, false))
{
MessageBox.Show("Instance already running");
return;
}
base.OnStartup(e);
//run application code
}
}
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是这段代码不起作用.我可以在多个实例中启动我的应用程序.有人知道我的代码有什么问题吗?谢谢
我试着写一个表达式来验证以下模式:
数字[0-9] 1次正好
"点"
数字[0-9] 1-2次
"点"
数字[0-9] 1-3次
"点"
数字[0-9] 1-3次或"连字符"
例如,这些是合法的数字:
1.10.23.5
1.10.23.-
Run Code Online (Sandbox Code Playgroud)
这些不是:
10.10.23.5
1.254.25.3
Run Code Online (Sandbox Code Playgroud)
我使用RegexBuddy编写下一个模式:
[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.-
Run Code Online (Sandbox Code Playgroud)
在RegexBuddy中,一切看起来都很完美,但在我的代码中我对非法数字(如10.1.1.1)的看法是正确的
我写了下一个验证这个模式的方法:
public static bool IsVaildEc(string ec)
{
try
{
if (String.IsNullOrEmpty(ec))
return false;
string pattern = @"[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}|[0-9]\.[0-9]{1,2}\.[0-9]{1,3}\.-";
Regex check = new Regex(pattern);
return check.IsMatch(ec);
}
catch (Exception ex)
{
//logger
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我需要编写一个脚本来验证用户是否在Windows 8中使用"图片密码"功能.我正在使用.NET 4.
我试图搜索有关它的信息,但找不到任何东西.你有什么想法可以做到吗?
我正在编写一个安全应用程序,用于验证用户计算机上的许多安全规则和策略.我需要实现一个测试方法,该方法在启用Windows 8的安全启动功能时返回true ,或在禁用时返回false.
我搜索了信息,我看到这是一个BIOS功能.所以我的问题是:是否可以使用C#代码获取Windows 8安全启动的状态?如果有,怎么样?

更新:请参阅@ magicandre1981的答案,重要的是要提到状态注册表项仅在支持安全启动功能时存在.如果您在计算机上找不到此密钥,则可能是您的计算机不支持安全启动.
检查安全启动状态/支持转到运行 - > msinfo32.exe并搜索"安全启动状态"