小编Cha*_*ton的帖子

Mahapps.Metro改变单一控制的主题

在mahapps地铁中,有没有办法在每个控制的基础上改变主题(亮/暗)?我的问题是,我有一个使用Light主题的窗口,但我有一部分它有一个非常黑暗的背景我不能让ComboBox正确显示,小箭头保持黑色,即使我改变了背景颜色为黑色,前景为白色.我找到了关于改变箭头的参考文献,其中包含了一些关于控制模板的相当严重的诡计,但到目前为止运气不大......为了使事情变得更复杂,组合框位于列表框的项目模板中.

我在其他地方有一个弹出窗口,我意识到它具有完全合适的组合框样式,因为它使用的是黑暗主题.这就是为什么我问是否有一种简单的方法可以在单一控件下切换主题?

谢谢!

wpf c#-4.0 mahapps.metro

5
推荐指数
1
解决办法
2564
查看次数

如何在离线时将 txt/csv 文件加载到 javascript 字符串/数组中

我有一个小的 html/javascript 网页,我想在浏览器中离线运行。

以同样的方式,页面可以包含一个图像或一个 css 文件并在离线时使用它,我想包含一个 3mb 的电子表格,javascript 将它读入一个二维数组,我希望有一些可以在 IE8 上工作的东西以及现代浏览器。

C:\Folder\index.html
C:\Folder\code.js
C:\Folder\picture.png
C:\Folder\spreadsheet.csv
Run Code Online (Sandbox Code Playgroud)

我在网上找到了多种方法,例如

<script src="jquery-csv.js"></script>
var table = $.csv.toArrays("spreadsheet.csv");
Run Code Online (Sandbox Code Playgroud)

或者

d3.text('spreadsheet.csv', function(error, _data){
            var table = d3.csv.parseRows(_data);
        });
Run Code Online (Sandbox Code Playgroud)

或者

$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "data.txt",
        dataType: "text",
        success: function(data) {processData(data);}
     });
});
Run Code Online (Sandbox Code Playgroud)

但我倾向于得到同源策略错误,例如:

XMLHttpRequest cannot load file://data.txt. Received an invalid response. Origin 'null' is therefore not allowed access.

Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "null" from accessing …
Run Code Online (Sandbox Code Playgroud)

javascript csv arrays offline

5
推荐指数
1
解决办法
2万
查看次数

手动打开excel文件允许运行公式,使用VBScript或PowerShell或Python的win32com打开excel文件则不允许

我遇到了脚本无法更新 Excel 文件的问题,我将其简化为以下问题:

如果我打开一个 Excel 文件,我可以转到“公式”选项卡并单击“立即计算”,它将花费一些时间更新所有计算。

如果我运行 VBScript只是为了打开文件(请参阅以下代码),如果我转到“公式”选项卡并单击“立即计算”,它将立即刷新并且不会发生任何变化。

Dim objXLApp, objXLWb, objXLWs

Set objXLApp = CreateObject("Excel.Application")
objXLApp.Visible = True
Set objXLWb = objXLApp.Workbooks.Open(file_path.xls)
Run Code Online (Sandbox Code Playgroud)

我尝试过各种各样的东西,例如:

objXLApp.Calculation = xlAutomatic
objXLApp.Calculate
objXLApp.CalculateFull
objXLApp.CalculateFullRebuild
objXLWb.RefreshAll
objXLWs.EnableCalculation = True
objXLWs.Calculate               
Run Code Online (Sandbox Code Playgroud)

但这些似乎与进入选项卡并单击“计算”执行相同的操作,导致快速刷新,并且 Excel 页面根本不尝试更新。

使用python的win32com模块时也是如此。我无法在打开的文件中运行计算。

import win32com.client as win32

excel = win32.Dispatch('Excel.Application')
excel.Visible = True
excel_workbook = excel.Workbooks.Open(file_path.xls)
Run Code Online (Sandbox Code Playgroud)

使用 PowerShell 也是如此。

$excel = New-Object -com excel.application
$excel.Visible = $True
$workbook = $excel.Workbooks.Open( $file_path )
Run Code Online (Sandbox Code Playgroud)

那么为什么用这些语言打开文件会以某种方式关闭计算公式的能力呢?

python vbscript excel winapi vba

5
推荐指数
1
解决办法
5315
查看次数

如何在DataGrid中隐藏自动生成的列?

我已经从SQL服务器自动从DataTable填充了DataGrid.我希望用户能够添加或删除哪些列可见.我原本试过这个:

    public void populateTaskTable(DataTable dt)
    {                    
        //add the whole datatable to the datagrid
        dg.DataContext = dt.DefaultView;

        dg.Columns[0].Visibility = Visibility.Collapsed;
    }
Run Code Online (Sandbox Code Playgroud)

对于相应的xaml(我已经尝试了有和没有 AutoGenerateColumns="True"

           <DataGrid Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="True" 

                    <!-- <DataGrid.Columns></DataGrid.Columns> -->

            </DataGrid>
Run Code Online (Sandbox Code Playgroud)

这导致内存违规中断.所以我做到了

MessageBox.Show(dg.Columns.Count());
Run Code Online (Sandbox Code Playgroud)

要查看列是否正在填充,它不是,它输出一个,0即使我可以看到程序中的列.

从之前的stackoverflow问题中发现"自动生成的列未添加到列索引".

然后从这个问题我尝试更新DataGrid以获得像这样填充的列

   taskTable.UpdateLayout();
Run Code Online (Sandbox Code Playgroud)

   taskTable.Items.Refresh();
Run Code Online (Sandbox Code Playgroud)

哪个什么都没做.

有没有办法访问自动生成的DataGrid的属性,或者是将DataGrid的所有列添加到Columns组件的方法?

提前致谢.

c# wpf xaml datagrid

5
推荐指数
1
解决办法
1849
查看次数

如何在不需要地铁重音主题的情况下显示对话框?

我想像这样显示一个metro风格的对话框:

public async void Button_Click(object sender, RoutedEventArgs e)
{
   var metroWindow = (Application.Current.MainWindow as MetroWindow);
   await metroWindow.ShowMessageAsync("Title", "Body");
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,它一直在抛出错误:

mscorlib.dll中发生了未处理的"System.NullReferenceException"类型异常

使用堆栈跟踪:

在MahApps.Metro.Controls.Dialogs.BaseMetroDialog.HandleTheme()

在MahApps.Metro.Controls.Dialogs.BaseMetroDialog.Initialize()

在MahApps.Metro.Controls.Dialogs.BaseMetroDialog..ctor(MetroWindow owningWindow,MetroDialogSettings设置)

...

在System.Threading.ThreadHelper.ThreadStart()

经过大量的摆弄,我意识到我需要在我的App.xaml资源中添加一个重点来给它一个配色方案.

<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" /> 
Run Code Online (Sandbox Code Playgroud)

但是,我已经构建了我的程序,没有它,包括它已经搞砸了我的所有样式.此外,这里看到的口音总数不多,我找不到符合我方案的口音.

我一直试图ShowMessageAsync用这样的命令直接给它自己的颜色方案方法

metroWindow.MetroDialogOptions.ColorScheme = MetroDialogOptions.ColorScheme 
// MetroDialogColorScheme.Theme 
// MetroDialogColorScheme.Accented 
// MetroDialogColorScheme.Inverted;
Run Code Online (Sandbox Code Playgroud)

但同样的错误仍在继续出现.有办法解决这个问题吗?我怎么能让对话框使用我自己的风格?

编辑

我实际上已经在这里下载了这个文件:https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Styles/Accents/Cobalt.xaml

ResourceDirectory.MergedDictionaries取代

  <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" />
Run Code Online (Sandbox Code Playgroud)

  <ResourceDictionary Source="Cobalt.xaml" />
Run Code Online (Sandbox Code Playgroud)

这足以打破这个功能.我可以看到该主题仍然有效,但是当我尝试触发对话框时,窗口将会淡出,但对话框不会出现,我需要重新启动程序.这是怎么回事?

c# wpf xaml dialog mahapps.metro

5
推荐指数
1
解决办法
2969
查看次数

为什么这个功能12的圆柱复杂性?

我有一个(C#)函数检查四组条件并返回一个bool.如果其中任何一个为真,则返回true.我确信我可以简化逻辑,但我希望它具有相当的可读性.

Visual Studios中的CodeMaid扩展并告诉我该函数的cylomatic复杂性为12.我查了一下,并且cylomatic复杂性是

通过源代码的独立路径的数量

我不明白为什么它是12.我可以用两种方式来考虑它,要么圈复杂度应该是2,因为它总是通过相同的路径但是可以返回a true或a false.或者可以理解它是否是16,因为最后四个布尔or在一起可能都是真或假,2*2*2*2 = 16.

有人可以告诉我为什么它的12?甚至可能会显示一个图表,以便我可以看到不同的路径?

public bool FitsCheckBoxCriteria(TaskClass tasks)
{
    // note: bool == true/false comparisons mean you don't have to cast 'bool?' as bool


    // if neither checkboxes are checked, show everything
    bool showEverything = NoShutDownRequiredCheckBox.IsChecked == false &&
                          ActiveRequiredCheckBox.IsChecked == false; 

    // if both are checked, only show active non-shutdown tasks
    bool showActiveNonShutdown = ActiveRequiredCheckBox.IsChecked == true &&
                                 tasks.Active == "YES" &&
                                 NoShutDownRequiredCheckBox.IsChecked == true …
Run Code Online (Sandbox Code Playgroud)

c# complexity-theory cyclomatic-complexity

5
推荐指数
1
解决办法
321
查看次数

如何从字典填充大型数据列表(~2000 项)

现在我正在使用以下代码,但它在 Chrome 上需要大约 10 秒,在 IE11 上需要大约 2 分钟,这是它最终被使用的地方。

for (var key in dict) {
    if (dict.hasOwnProperty(key)) {
        combo.innerHTML += "<option value=\"" + dict[key] + "\">" + key + "</option>";
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在阅读本教程:http : //blog.teamtreehouse.com/creating-autocomplete-dropdowns-datalist-element,其中建议在处理较大数量时使用 ajax,但我不确定 large 是指 100 个项目还是100,000 项。

var request = new XMLHttpRequest();

request.onreadystatechange = function(response) {
  if (request.readyState === 4) {
    if (request.status === 200) {

      var jsonOptions = JSON.parse(request.responseText);

      jsonOptions.forEach(function(item) {

        var option = document.createElement('option');
        option.value = item;
        dataList.appendChild(option);

      });

    } else { …
Run Code Online (Sandbox Code Playgroud)

javascript ajax dictionary html-datalist

5
推荐指数
1
解决办法
5625
查看次数

如何让VBA Macro在后台连续运行?

我想监视一个值,并在满足某些条件时收到电子邮件通知.我有一个像这样的宏:

Do While True

    Worksheet.Calculate

    If Value > 10 Then
        SendEmail
    End If

    Sleep 60*CLng(1000)

Loop
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,它会堵塞整个程序,如果我尝试做任何事情,它将无法响应.

反正有没有完成这个,但让它在后台运行或至少没有崩溃程序?

我以前做的是使用VBScript打开一个不可见的电子表格,VBScript在后台持续运行,监控条件并运行良好,但我的客户真的想要一个GUI,并且它在程序本身.

有什么想法吗?

excel vba excel-vba

5
推荐指数
1
解决办法
2万
查看次数

在编译时抛出错误的LINT/synthesis安全语句是什么?

我有一个传递的parameter模块然后实例化与定义的参数对应的另一个模块.

但是,如果没有为某个参数组合定义一个case,我想在编译时抛出一个错误来突出显示问题,如下所示:

generate
if (PARAM1 == 1 && PARAM2 == 2) begin

   // instantiate module logic_A

end else if (PARAM1 == 2 && PARAM2 == 1) begin              

   // instantiate module logic_B

end else begin

   // throw an error at compile time if we haven't
   // defined a case for those parameters 

end
endgenerate
Run Code Online (Sandbox Code Playgroud)

但是,这个代码仍然需要是可综合的(在Verilog中,而不是SystemVerilog)并传递LINTing,尽管插入错误.

有谁知道在这种情况下我可以使用什么?先感谢您.

verilog hdl

5
推荐指数
0
解决办法
875
查看次数

如何使用通用Windows应用程序将串行数据写入COM端口?

通常,C#应用程序使用System.IO.Ports如下方式:

SerialPort port = new SerialPort("COM1"); 
port.Open(); 
port.WriteLine("test");`
Run Code Online (Sandbox Code Playgroud)

但是通用Windows应用程序不支持,System.IO.Ports因此无法使用此方法。有谁知道如何通过UWA中的COM端口写入串行数据?

c# serial-port serial-communication win-universal-app

4
推荐指数
1
解决办法
5761
查看次数