0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Studio / WPF > ObjectDataProvider >奇数と偶数のインデックス付き乱数のListBox表示 > IEnumerableの関数に引数を追加 | ObjectDataProvider.MethodParametersを指定 | xmlns:system定義 | system:Boolean使用

Last updated at Posted at 2017-06-08
動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

http://gushwell.ldblog.jp/archives/52333750.html
を参考にObjectDataProvider を用いて作成クラスの関数を使う例を勉強中。
引数を使う例を検討してみた。

  • IEnumerableの関数に引数を追加
  • ObjectDataProvider.MethodParametersを指定
  • xmlns:system定義
  • system:Boolean使用

v0.1

MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace _170606_t1333_ObjectDataProvider
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
    public class NumberUtil
    {
        public IEnumerable<int> GetRandomNumbers()
        {
            var rnd = new Random();
            for (int idx=0; idx<12; idx++)
            {
                yield return rnd.Next(100, 1000);
            }
        }
        public IEnumerable<int> GetIndexNumbers(bool isOdd)
        {
            int start = isOdd ? 1 : 0;
            for (int idx = start; idx < 12 * 2; idx+=2)
            {
                yield return idx;
            }
        }
    }
}
MainWindow.xaml
<Window x:Class="_170606_t1333_ObjectDataProvider.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_170606_t1333_ObjectDataProvider"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ObjectDataProvider ObjectType="{x:Type local:NumberUtil}"
                            MethodName="GetRandomNumbers" x:Key="RandomNum"/>
        <ObjectDataProvider ObjectType="{x:Type local:NumberUtil}"
                            MethodName="GetIndexNumbers" x:Key="IndexNum_odd">
             <ObjectDataProvider.MethodParameters>
                <system:Boolean>True</system:Boolean>
            </ObjectDataProvider.MethodParameters> 
        </ObjectDataProvider>
        <ObjectDataProvider ObjectType="{x:Type local:NumberUtil}"
                            MethodName="GetIndexNumbers" x:Key="IndexNum_even">
            <ObjectDataProvider.MethodParameters>
                <system:Boolean>False</system:Boolean>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <Grid>
        <StackPanel Orientation="Horizontal">
            <ListBox Height="300" Margin="5"
                 ItemsSource="{Binding Mode=OneWay, Source={StaticResource IndexNum_odd}}"/>
            <ListBox Height="300" Margin="5"
                 ItemsSource="{Binding Mode=OneWay, Source={StaticResource IndexNum_even}}"/>
            <ListBox Height="300" Margin="5"
                 ItemsSource="{Binding Mode=OneWay, Source={StaticResource RandomNum}}"/>
        </StackPanel>
    </Grid>
</Window>

2017-06-08_11h26_10.png

XAMLの方はMethodParametersをマークアップ拡張で与えることができれば、もっとコンパクトになるだろうが、今は分からない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?