none
GridView 怎么灰化某一项 RRS feed

  • 问题

  • Gridview->IsEnabled = false; 全部变灰了,

    我想使其中的某一项变灰,使用Gridview->IndexOf(2)  取得某一项,提示错误,没有IndexOf 方法,

    求帮助。

    2013年1月6日 9:37

答案

全部回复

  • .,。。。无语了 把分给我把 找到item 用GridView.Items 轮循他  然后找到你想要的 那个item  把它变灰

    非常荣幸成为.net 开发者

    2013年1月6日 11:04
  • foreach(var item in GridView.Items)

    {

        if(xxxxxx)  (item as GridViewItem).IsEanble = false;

    }


    非常荣幸成为.net 开发者

    2013年1月6日 11:05
  • int n = myGridView->Items->Size;
    	for (int i = 0; i < n; i++)
    	{
    		HomeData^ h = safe_cast<HomeData^>(myGridView->Items->GetAt(i));
    		if (h->title->Equals("空"))
    		{
    			GridViewItem^ item = safe_cast<GridViewItem^>(myGridView->Items->GetAt(i)); //这里一直崩溃怎么办?
    			item->IsEnabled=false;
    		}
    	}


    First-chance exception at 0x77254B32 in Win8.exe: Microsoft C++ exception: Platform::InvalidCastException ^ at memory location 0x032DCF84. HRESULT:0x80004002 不支持此接口

    WinRT 信息:不支持此接口

    大家还有没有好方法?

    2013年1月7日 2:45
  • 我在网上看到一个方法:继承gridview类,改写PrepareContainerForItemOverride方法

    但是不会使用,我写了个demo,求大神帮忙看看。

    demo 请戳这里下载:

    https://skydrive.live.com/?cid=51B2FDD068799D15&id=51B2FDD068799D15%211065#cid=B52D1CB26350F786&id=B52D1CB26350F786%21122


    2013年1月8日 8:12
  • 改写了不会用。
    2013年1月8日 8:25
  • 找到那一项就能把那一项变灰吗?我看了问下gridview.SelectedItem,没有变灰的方法或属性哦。

    2013年1月8日 8:43
  • 我现在是用 public ref class MyVariableGridView sealed: GridView  继承gridview,

    然后改写PrepareContainerForItemOverride 方法,不会用。

    2013年1月8日 9:13
  • 最好把我的demo也烤过去给他看,怎么改写 PrepareContainerForItemOverride 呢。
    2013年1月8日 9:25
  • Hi,

    一楼的方法是不行的,而且你这么写肯定会崩溃,因为IsEnableed属性是GridViewItem的属性。

    向GridView添充Object用来显示的时候,无论使用绑定还是手动添加都会自动生成GridViewItem用来装载数据,但是我们从Item中却取不到这个,因此如果你想改变所有的可以用GridView.ItemContainerStyle来改变,只想改变一个可以用VisualTreeHelper取到特定的GridViewItem(这个应该很容易做到,有GetParent()方法)之后再改变IsEnabled即可,你可以看看这个参考中这段话:

    http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.gridviewitem.aspx

    The GridViewItem class provides the container for items displayed in a GridView control. You populate the GridView by adding objects directly to its Items collection or by binding its ItemsSource property to a data source. When items are added to the GridView, a GridViewItem container is created automatically for each item in the collection.

    You can specify the look of the GridViewItem by setting the GridView's ItemContainerStyle property to a Style with aTargetType of GridViewItem.


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年1月8日 9:35
    版主
  • 你这个方法是检测 ItemsPanel 来取得单个的项吗

    <ItemsPanelTemplate x:Key="DetailStoreFrontGridItemsPanelTemplateEx">
                    <WrapGrid x:Name="SeqisEnable" MaximumRowsOrColumns="1" VerticalChildrenAlignment="Top"
    					  HorizontalChildrenAlignment="Left" Margin="0,0,30,0"
                          Orientation="Vertical"/>
            </ItemsPanelTemplate>
    WrapGrid^ DetailsPage::FindScrollView(DependencyObject^ parent,String^ name) //找“SeqisEnable”
    {
    	int k = VisualTreeHelper::GetChildrenCount(parent);
    	for (int i = 0; i < VisualTreeHelper::GetChildrenCount(parent); i++)
    	{
    		auto child = VisualTreeHelper::GetChild(parent, i);
    		Platform::String^ controlName = safe_cast<String^> (child->GetValue(Control::NameProperty));
    		if (controlName == name)
    		{
    			WrapGrid^ findControl = safe_cast<WrapGrid^> (child);
    			return findControl;
    		}
    		else
    		{
    			WrapGrid^ result = FindScrollView(child,name);						
    			if (result != nullptr)
    				return result;
    		}
    	}
    	return nullptr;
    }
    WrapGrid^ h =	FindScrollView(m_gridSeq,"SeqisEnable");
    	int xn = h ->Children->Size;
    	GridViewItem^ s = safe_cast<GridViewItem^>(h->Children->GetAt(0));
    	s->IsEnabled=false;

    这个方法必须在界面生成之后才有效果,在数据生成过程中,h->children->size 是 0;

    我需要在界面生成的时候就决定isenabled属性。






    2013年1月8日 9:43
  • Hi,

    你可以看看这个帖子的方法:

    http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/c06d5b89-e3a8-41c9-8608-abbf2d1dc9f8


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年1月8日 9:54
    版主
  • 这个demo 太旧了,我下载下来,编译提示:

     error CS0234: 命名空间“Windows.UI.Xaml”中不存在类型或命名空间名称“ApplicationViewStateChangedEventArgs”(是否缺少程序集引用?)
     error CS0246: 未能找到类型或命名空间名称“ApplicationViewStateChangedEventArgs”(是否缺少 using 指令或程序集引用?)

    xue,能帮忙改改跑通么,这个是C#的。



    2013年1月8日 10:15
  • hi,xue,我用C++代码实现了置灰,顺变把不规则布局也实现了。

    囧。。。。

    2013年1月10日 2:36
  • 2013年1月10日 2:54