小编Erw*_*win的帖子

Windows 8 Metro ListView - 无法禁用ScrollViewer(C#/ XAML)

我有一个ScrollViewer,它包含一个包含2个ListView的Horizo​​ntal StackPanel.

我的目标是让2个ListViews一起滚动.我遇到的问题是我无法将ListView中的内置ScrollViewers禁用...无论我做什么,它们都会继续独立滚动.我真的一定要错过一些东西......任何帮助都会受到赞赏.

这是我的XAML:

<ScrollViewer VerticalScrollBarVisibility="Visible" 
          HorizontalScrollBarVisibility="Disabled" 
          ZoomMode="Disabled" 
          HorizontalAlignment="Left" 
          VerticalAlignment="Top" 
          Width="830" 
          Height="500">

  <StackPanel x:Name="teesSP" 
              HorizontalAlignment="Left" 
              Height="500" 
              Width="830" 
              Orientation="Horizontal" 
              VerticalAlignment="Top">

      <ListView x:Name="timesLV1" 
                HorizontalAlignment="Left" 
                Width="130" 
                Height="500" 
                ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                ScrollViewer.HorizontalScrollMode="Disabled"
                ScrollViewer.IsHorizontalRailEnabled="False"
                ScrollViewer.IsHorizontalScrollChainingEnabled="False"
                ScrollViewer.IsScrollInertiaEnabled="False"
                ScrollViewer.IsVerticalRailEnabled="False"
                ScrollViewer.IsVerticalScrollChainingEnabled="False"
                ScrollViewer.IsZoomChainingEnabled="False"
                ScrollViewer.IsZoomInertiaEnabled="False"
                ScrollViewer.VerticalScrollBarVisibility="Disabled"
                ScrollViewer.VerticalScrollMode="Disabled"
                BorderThickness="2" 
                BorderBrush="Black" 
                VerticalAlignment="Top" 
                ItemTemplate="{StaticResource TimeTileTemplate}"
                SelectionMode="Single" 
                SelectionChanged="timesLV_Click" />

      <ListView x:Name="timesLV2" 
                HorizontalAlignment="Left" 
                Width="700" 
                Height="500" 
                ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                ScrollViewer.HorizontalScrollMode="Disabled"
                ScrollViewer.IsHorizontalRailEnabled="False"
                ScrollViewer.IsHorizontalScrollChainingEnabled="False"
                ScrollViewer.IsScrollInertiaEnabled="False"
                ScrollViewer.IsVerticalRailEnabled="False"
                ScrollViewer.IsVerticalScrollChainingEnabled="False"
                ScrollViewer.IsZoomChainingEnabled="False"
                ScrollViewer.IsZoomInertiaEnabled="False"
                ScrollViewer.VerticalScrollBarVisibility="Disabled"
                ScrollViewer.VerticalScrollMode="Disabled"
                BorderThickness="2" 
                BorderBrush="Black" 
                VerticalAlignment="Top" 
                ItemTemplate="{StaticResource TimeTileTemplate}"
                SelectionMode="Single" 
                SelectionChanged="timesLV_Click" />

  </StackPanel>

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

c# xaml listview scrollviewer windows-8

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

String.Split()返回空值

我只需要读取完整字符串的特定部分.该字符串将采用以下形式:

"1部分货币名称= 0.4232其他货币名称"

因此,我能想到的最快的方法是将字符串拆分为等于(=)运算符,从而向数组添加两个值,如下所示:

string rawInput = "1 Some Currency Name = 0.4232 Other Currency Name";
string[] rawSplit = rawInput.Split('=');
string firstRate = rawSplit[0].ToString();
string secondRate = rawSplit[1].ToString();
Run Code Online (Sandbox Code Playgroud)

我现在只需要获取secondRate字符串的第一部分("0.4232").所以我会再次拆分该字符串(编码错误):

string[] lastSplit = secondRate.Split(); //Split at whitespace characters
string firstValue = lastSplit[0].ToString(); //Should return "0.4232" but instead returns ""
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序来测试此函数时,它返回一个空字符串而不是值"0.4232".为什么会这样?我在这里错过了什么?

完整方法:

private void btnTest_Click(object sender, EventArgs e)
{
    string rawInput = "1 Some Currency Name = 0.4232 Other Currency Name";
    string[] rawSplit = rawInput.Split('=');
    string baseRate = rawSplit[0].ToString(); //1 Some Currency …
Run Code Online (Sandbox Code Playgroud)

c# string split

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

Progressbar不报告进度

我可能在相同的代码中盯着太长时间,但我似乎无法让进度条在下面的代码中工作.有人有任何提示吗?

private void doBackgroundTIFConverter(object sender, DoWorkEventArgs e)
{
    string tifFileName = (string)e.Argument;
    bm = new Bitmap(tifFileName);
    int total = bm.GetFrameCount(FrameDimension.Page);
    document.Open();
    cb = writer.DirectContent;
    for (int k = 0; k < total; ++k)
    {
        backgroundTIFConverter.ReportProgress(k / total * 100);
        bm.SelectActiveFrame(FrameDimension.Page, k);
        iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(bm, ImageFormat.Bmp);
        // scale the image to fit in the page
        img.ScalePercent(72f / img.DpiX * 100);
        img.SetAbsolutePosition(0, 0);
        cb.AddImage(img);
        document.NewPage();
    }
    bm.Dispose();
    document.Close();
}

private void progressBackgroundTIFConverter(object sender, ProgressChangedEventArgs e)
{
    splitProgressBar.Value = e.ProgressPercentage;
}

private …
Run Code Online (Sandbox Code Playgroud)

c# multithreading winforms progress-bar

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

Linq to Objects - 查询执行多少次?

我有以下Linq to Objects查询:

var query = this._vaporizerData
    .Where(row => row.Coater == coater)
    .Where(row => row.Distributor == distributor)
    .Where(row => row.PowerTubeA.HasValue);

if (query.Any())
{
    tubeA = query
        .Where(row => row.CoaterTime.Value >= readTime.AddMinutes(-5))
        .Where(row => row.CoaterTime.Value <= readTime)
        .OrderByDescending(row => row.CoaterTime)
        .Select(row => row.PowerTubeA)
        .First()
        .Value;
}
Run Code Online (Sandbox Code Playgroud)

我知道当执行query.Any()行时,将评估第一个Linq查询.我的问题是这个.假设第一个查询的结果是5行数据.当我执行第二个查询(以'tubeA = query'开头)时,我是否更正它将仅对第一个查询返回的五行进行评估?

非常感谢.

c# linq

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

从 ComboBox 事件获取 DataGrid 行

我有一个 DataGrid,其中有 2 列,在 XAML 中定义为

<DataGrid x:Name="marketInfodg" Grid.Row="1"
ItemsSource = "{Binding ElementName=This, Path=dataTableTest}"
CanUserAddRows="False">
<DataGrid.Columns>
    <DataGridComboBoxColumn Header="Department Id" x:Name="comboboxColumn1"
         SelectedValueBinding="{Binding Department Id}" />
        <DataGridTemplateColumn x:Name="DataGridTempCol" Header="Selection">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox
x:                  Name = "combo"
                    SelectedValue = "{Binding Selection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                    ItemsSource = "{Binding comboBoxSelections, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"
                    DropDownOpened = "combo_DropDownOpened"
                    DisplayMemberPath = "Key"
                    IsEditable="True">
                    </ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

构造函数代码是

_dataTableTest = new DataTable();
DataColumn dc = new DataColumn();
dc.ReadOnly = false;
dc.DataType = typeof(String);
dc.ColumnName = "Department …
Run Code Online (Sandbox Code Playgroud)

c# wpf

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